lp6m’s blog

いろいろかきます

Schemeのメモ

Schemeのリストの操作

> (list 1 2)
(1 2);普通にリスト
> `(1 2)
(1 2);これもリスト
> (define a 1)
> (define b 2)
> (list a b 3)
(1 2 3);aとbは中身が展開される
> `(a b 3)
(a b 3);aとbは中身が展開されない
> `(,a ,b 3)
(1 2 3);aとbの中身が展開された どうやら`を利用したリストの中では変数の前にカンマをいれると中身が展開されるみたい
> (list (list 1 2) 3 4)
((1 2) 3 4);リストの中にリストがあるやつ
> `(`(1 2) 3 4)
(`(1 2) 3 4);なんで(1 2)の前に`があるのか謎い
> (equal? (list (list 1 2) 3 4) `(`(1 2) 3 4))
#f;上の二つは違うらしい・・・・・・・?
> `(,@(list 1 2) 3 4)
(1 2 3 4);,@をつかうと直後のリストのカッコが外れる
> `(,@`(1 2) 3 4)
(1 2 3 4);同様
> `(,@`(,a ,b) 3 4)
(1 2 3 4);合わせ技