RubyでSchemeぽいの書く(3)
はてダはっつけコード管理に限界を感じたのでGoogle Code Hosting使ってみた。Gmailアカウント持ってるだけで、おどろくほど簡単に使えた。選択できるLicenceにNYSLとかpublic domainとか無かったんで修正BSDライセンスになったらしいです。
http://code.google.com/p/rbdsp/
Rubyの全体像は、なんかまだ見えてこない。でもけっこう使いやすいと思う。あと動的言語の強さってのを感じた。インタプリタは、動的言語の方が書きやすいかもなあ。
以下のようなことできるくらい。例によって効率とかは全無視でいってます。
(define a (lambda (x) (+ 1 x))) (define b (lambda (x) (+ 1 (a x)))) (define c (lambda (x) (+ 1 (b x)))) (print (a 1)) (print (b 2)) (print (c 3))
C:\hoge\docs\rbdsp>ruby rbdsp.rb tests\test-010.scm 2 4 6
lambdaを一応仕込んだ。
(define fact (lambda (x) (if (eq? x 0) 1 (* x (fact (- x 1)))))) (print (fact 5))
C:\hoge\docs\rbdsp>ruby rbdsp.rb tests\test-011.scm 120
まあ階乗ができればいいよねだいたい。
(define a 100) (print a) (set! a 200) (print a)
C:\hoge\docs\rbdsp>ruby rbdsp.rb tests\test-012.scm 100 200
今思いだしたけど、たぶんset!とdefineが同じになってた気がする。
(define mkcount (lambda (x) (lambda () (set! x (+ x 1)) x))) (define c0 (mkcount 0)) (define c1 (mkcount 10)) (print (c0)) (print (c1)) (print (c0)) (print (c0)) (print (c1))
C:\hoge\docs\rbdsp>ruby rbdsp.rb tests\test-013.scm 11 11 12 13 12
出鱈目じゃんという。何故こんなことになった。なんとなくで手だけ動かして書くからこういうことになる。
えーと、このRuby課題のレポート締め切りたしか2/4だな。レポート作業にとりかからねば。