読者です 読者をやめる 読者になる 読者になる

標高+1m

Make, Hack, Think

Lisp

カッコの少ないSchemeを作る

昨日の記事 ympbyc.hatenablog.com の内容をScheme (gauche)で実験できるようにしてみます。 今回の記事は、上から順にGaucheのリスナに貼り付けていけば、動作が確認できるようにしてあります。 準備 まず、固定長引数とそれ以降の引数を取って、余った引数…

Lispから可変長引数を引き算したらできること

Schemeから可変長引数を引き算したら -- Island Life Shiroさんが面白い記事書かれてたので、前に実際に可変長引数をなくしたLispを作って発見したことを紹介します。*1 実装者とは全く別の、遊ぶ人の視点からの記事です。 この記事では意図的にマクロを一切…

玲音はBeOSユーザーだった!? lainのLisp開発環境を発掘!

こんばんは。アマチュアLisp考古学者の山下です。先週弊社でピザを焼きながら唐突に話題に上った、lainのHandiNAVIにLispのソースコードが表示されているシーンについて検証していきます。 幻のLisp開発環境を手に入れてコネクトワイヤードしたい! まずは先…

宇宙API Part1

僕は今頭がhyperactiveになってるからとっておきの考えを書く。これは僕が暇なときにいつも考えてることで、これからも何回か書くことになると思う。 宇宙というソフトウェアのコードを、なるべく簡潔に記述するとしたらどんな風になるのか考えてみる。この…

CLOSオブジェクトのシリアライズ

これ便利。 (define-class <serializable> () ()) (define-method write-object [(x <serializable>) out] (let* ([class (class-of x)] [serializable-slots (filter (^s (get-keyword :init-keyword (cdr s) #f)) (class-slots class))] [slot-names (map car serializable-slots)] [in</serializable></serializable>…

Carrotに別名を導入した

昨日の記事で、 例えば、真偽値はa -> a -> aな関数にして、型はBoolにしたいけど、 そうしちゃうと=cを使っても分岐の左右が同じ型かのチェックができなくなっちゃう ということを書いたんだけど、とりあえずこのBoolについての問題はシノニムを導入する事…

Carrotの変な型システムについて

年末年始は結局だらだらと本を読んで過ごしてて全然Carrotを触ってなかった。昨日今日と頑張ったらとりあえず動く型チェッカができて、わりかし欲しいものに近付いた気がする。 今はCarrotを、クロージャといくつかの基本型しかない、型なしλ計算計算機みた…

化ける!S式

(この記事はLisp Advent Calendar 13日目のためのエントリです。) こんにちは!冬休みに日本に帰るときに経由しているロサンゼルスの空港で書いています。アメリカ時間ではまだ13日ということで遅刻していないと言い張らせてください。 Lispアドベントカレ…

撫子からにんじんへ

トイ言語Nadekoの名前をCarrotに変えた。Schemeの一番最初のコンパイラの名前がRabbitだったらしいので割とお洒落な気がする。うさぎはにんじんが好きっていうのだけじゃなくて、 Rabbit Carrot で同じ文字数な上に文字がダブる位置まで一緒だから超お洒落だ…

Lispから他言語へのトランスレータでLispのマクロシステムをそのまま使う方法

CPS変換してsetTimeoutjavascriptでスタック食わずにガンガン再帰したくて今日ちろっと試していたことがあるんだけど、その過程で見つけたことのメモ。1. トランスレータはターゲット言語で実装するより翻訳元言語で実装する方が1000倍楽. パーサは(read)で…

JavaScriptでCLOSライクな多重継承と総称関数

2年ぶりくらいにCLOS(GaucheのやつなのでせいかくにはTklos)をかじったらやっと意味が分かりました。 多重ディスパッチかっこよすぎる。おもむろにgithubを探したらJS-CLOSっていうロシアの人が1年前に放棄した動かないJSプロジェクトがあったので、フォーク…

Smalltalk-72 at Smalltalk勉強会(兼忘年会)

Ustream.tv: ユーザー CincomJapan: Smalltalk-users.jp@CINCOM, Smalltalk-users.jp@CINCOM. コンピュータ眠いので一応これだけ。