「高階関数」の版間の差分
削除された内容 追加された内容
→fold: foldr, foldlに実行例を追加 |
|||
117行目:
右方向の畳み込み(''foldr'')と左方向の畳み込み(''foldl'')があり、[[プログラミング言語|言語]]によっては最初から同様の機能が組み込まれていることがある(詳しくは[[:en:Fold (higher-order function)|foldの英語版記事]]の該当項目を参照)。
{{col-begin}}
{{col-2}}
[[Image:right-fold-transformation.png]]▼
[[Image:
<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}}
<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 ===
|