kiyokaのブログアーカイブ

Archive of old blog posts

そろそろオレ言語でもやっておくか(7)

RubyでLisp系言語処理系を作りはじめた

現段階でRubyのコードで大体500行くらい。 RedLispという名前にした。Googleで検索したところ、同じ名前のものは無かったのでこれにした。RedはRubyが赤いから。ナント安易な… 赤色というのは、プレゼンの時にシャア専用とか何とかいえばネタにしやすいという狙いもある(笑) img

こんな変な動きをするのだ

bash-3.2$ ./redlisp 
> (car '(a b c))
a 
> (cdr '(a b c))
(b c )
> (+ 1 2 (+ 3 4 )) 
10 
> +
#<Proc:0x00021584@./redlisp:293> 
> 123
123 
> "123"
"123"
> (+ "123" "456")
"123456"
> (sprintf "%02X" (car '(15 16)))
"0F"
> (cons 1 2)
(1 . 2)
> (cons 1 '(2 3 4))
(1 2 3 4 )
> (exit 1)

で、結局なにを作りたいの?

S式でRubyプログラミングができたらどんな感じかを一度体験してみたいというのが作り始めた動機だ。 S式のどこの節を千切って、あっちへ接木してというような柔軟なプログラミング体験はRubyではできない。 Rubyの良い面も有るのでRubyのコードと混在できるようにするつもり。 なので、ユーザインタフェース的な実験がメインになる。ということで、実用言語としてのパフォーマンスとかはあまり興味がないの。 S式でプログラミングをするのは好きなんだけど、例えばTokyoCabinetみたいな最近話題のDBでちょっと使って遊んでみたいというような場合には、Rubyのようにバインディングが量産されてくる言語にのっかるのが楽という事情もある。 とりあえず直近の目標は、Shibuya.LispでLTをすることなので、ソレナリに面白い話やデモができるように考えていこうと思う。