Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2009-01-16

S式Dylanの処理系

| 07:32 | S式Dylanの処理系 - わだばLisperになる を含むブックマーク はてなブックマーク - S式Dylanの処理系 - わだばLisperになる

大分前に試していてすっかり書くのを忘れていたのですが、Dylanは当初から仕様はオープンだったということもあり、登場時に各所で実験的に作成されたインタープリタがあります。

代表的なものとして、Thomasがあり、当時のScheme処理系の上で動くものでした。

現在でもソースは入手できるので頑張れば今でも動くとは思うのですが、R3RS位なので自分は良く分からず、上手く動かせないでいました。

というところで放置していたのですが、旧MacOS用にコンパイルされたものが配布されているのを発見したので早速MacOSX上のClassic環境で動かしてみたところ素直に動くので記念エントリです。

から入手できます。

(define-method fib ((n <number>))
  (cond ((< n 2) n)
        (else: (+ (fib (- n 2))
                  (fib (- n 1))))))
(fib 10)
;=> 55

(define-class <foo> (<object>)
  x
 (y init-value: 0 init-keyword: y:))

(define-class <bar> (<foo>)
 (z init-function: (method () 333)))

(bind ((foo (make <foo> y: 8)))
  ((setter x) foo 3)
  (list (x foo) (y foo)))
;=> (3 8)

(z (make <bar>))
;=> 333

という風に書いたり試したりして遊べます。

MacOSXのClassic環境自体絶滅しそうですが、興味のある方は試してみてはいかがでしょうか。