なんかリストとlambdaとか憶えたからちょっと色々してみる

簡単なリストの扱い方と、lambda式の書き方とかを憶えたらちょっと便利なことさせれる気がしてきたのでちょっと色々書いてみよう。

gosh> (let ((x 2)) (+ x 3))
5
gosh> (let ((f +) (x 10)) (f x 3))
13
gosh> (let ((f (lambda (a) (* a a)))) (f 3))
9
gosh> (map (lambda (item) (* item 2)) '(3 4 5 1 2))
(6 8 10 2 4)
gosh> (define numlist->string (lambda (lst) (if (null? lst) '()
 (cons (number->string (car lst)) (numlist->string (cdr lst))))))
numlist->string
gosh> (numlist->string '(3 2 33.1 2))
("3" "2" "33.1" "2")
gosh> (for-each display (numlist->string '(3 2 33.1 2)))
3233.12#<undef>
gosh> (for-each (lambda (str) (display str) (display " "))
 (numlist->string '(32 33.1 2)))
3 2 33.1 2 #<undef>

なんだか便利な気がしてきたぞしてきたぞ。言語仕様レベルというか、それ以前にリストありきな言語だなあ。C言語でうんこみたいなというかうんこそのものなリスト操作ライブラリを書いたことあるけど。
あと、なんかちょっと慣れたら括弧だらけなことが超クールに思えてきた。括弧イイ。駄洒落。vimLispは相性良い気がする。%で対応する括弧位置にカーソル移動してくれるのはLispのためだきっと。

test