Ex 2.38

(fold-right / 1 (list 1 2 3))
;Value: 3/2  <== (1 / (2 / (3 / 1)))

(fold-left / 1 (list 1 2 3))
;Value: 1/6  <== (((1 / 3) / 2) / 1)

(fold-right cons nil (list 1 2 3))
;Value: (1 2 3)  <== (cons 1 (cons 2 (cons 3 nil)))

(fold-left cons nil (list 1 2 3))
;Value: (((() . 1) . 2) . 3)  <== (cons (cons (cons nil 3) 2) 1)
      • -

fold-right と fold-left の結果が同じになるために op が満たすべき性質について答え忘れていた。

「交換則」。こういってお分かりいただければだが。 (= (op a b) (op b a)) を満たすような op。