回答編集履歴

1

追加

2018/10/17 04:09

投稿

mightyMask
mightyMask

スコア143

test CHANGED
@@ -1 +1,27 @@
1
1
  「(:)」は結合則を満たしていて、結合則を満たす演算に対しての「foldl」と[foldr」は同じ挙動です。
2
+
3
+ (厳密には、第二引数であるアキュムレータが単位元であるならという但し書きが必要ですが)
4
+
5
+
6
+
7
+ どこに解釈の間違いがあるかというと、
8
+
9
+ (:) 1 [] ... = [1]
10
+
11
+ (:) 2 [1] ... = [2,1]
12
+
13
+ (:) 3 [2,1] ... = [3,2,1]
14
+
15
+ (:) 4 [3,2,1] ... = [4,3,2,1]
16
+
17
+ となるのではなく、
18
+
19
+ (:) 4 [] ... = [4]
20
+
21
+ (:) 3 [4] ... = [3,4]
22
+
23
+ (:) 2 [3,4] ... = [2,3,4]
24
+
25
+ (:) 1 [2,3,4] ... = [1,2,3,4]
26
+
27
+ となります。