2008-07-05から1日間の記事一覧
gosh> (fold cons '() '(a b c d e)) (e d c b a) リストの要素が逆になる。 init が proc の2番目の引数になるのがポイントになっている。
ネストしたリストも全てコピーするって、copy-list でも出来ていると思うんやけど.. (define (deep-copy-list lis) (if (pair? lis) (cons (deep-copy-list (car lis)) (deep-copy-list (cdr lis))) #?=lis)) ネストされているのも含めて全ての要素が最後の…
(define (length lis) (if (pair? lis) (+ 1 (length (cdr lis))) 0)) ついでにネストされている要素の数も (define (deep-length lis) (cond ((null? lis) 0) ((pair? lis) (+ (deep-length (car lis)) (deep-length (cdr lis)))) (else 1)))
(define (filter pred lis) (cond ((null? lis) '()) ((pred (car lis)) (cons (car lis) (filter pred (cdr lis)))) (else (filter pred (cdr lis))))) 感覚がつかめてきた
(defile (reverse lis) (define (reverse-rec lis a) (if (null? lis) a (reverse-rec (cdr lis) (cons (car lis) a)))) (reverse-rec (cdr lis) (list (car lis)))) こういうイメージと思えば、そんなに難しくない for (split //, $lis) { $a = $_ . $a; } …
各データに対して、リスト操作の手続きをまとめてみた。 データ 例 pair? null? car cdr 空リスト '() × ○ ERROR ERROR リスト '(1 2 3) ○ × 1 '(2 3) リテラル 1 × × ERROR ERROR car や cdr は空リストやリテラルに適用するとエラーになるので、 事前に pa…
「プログラミングGauche」を買ったので、早速読む。 わからないところは本当にわからない、 何回か読んでいると分かるようになる。凄い新鮮やな。