「高階関数」の版間の差分

削除された内容 追加された内容
Meniv (会話 | 投稿記録)
Meniv (会話 | 投稿記録)
→‎fold: foldr, foldlに実行例を追加
117行目:
右方向の畳み込み(''foldr'')と左方向の畳み込み(''foldl'')があり、[[プログラミング言語|言語]]によっては最初から同様の機能が組み込まれていることがある(詳しくは[[:en:Fold (higher-order function)|foldの英語版記事]]の該当項目を参照)。
 
{{col-begin}}
{{center|
{{col-2}}
[[Image:right-fold-transformation.png]]
[[Image:leftright-fold-transformation.png|frame]]
<source lang="scheme">
}}
(fold-right + 0 '(1 2 3))
;=> 6
; (+ 1 (+ 2 (+ 3 0)))と同じ
(fold-right cons '(0) '(1 2 3))
;=> '(1 2 3 0)
; (cons 1 (cons 2 (cons 3 '(0))))と同じ
</source>
 
{{col-2}}
[[Image:rightleft-fold-transformation.png|frame]]
<source lang="scheme">
(fold-left + 0 '(1 2 3))
;=> 6
;(+ (+ (+ 0 1) 2 ) 3) と同じ
(fold-left cons '(0) '(1 2 3))
;=> '((((0) . 1) . 2) . 3)
;(cons (cons (cons '(0) 1) 2 ) 3) と同じ
</source>
{{col-end}}
 
=== unfold ===