5
、List.map
が書かれている:OCamlのList.mapにレットがあるのはなぜですか?次のようにOCamlの3.12.1で
let rec map f = function
[] -> []
| a::l -> let r = f a in r :: map f l
私はその最後の行が| a::l -> f a :: map f l
として書かれたが、その代わりに、結合let
一見役に立たない存在であることを期待したいです。どうして?
確かに、試したOCamlのすべてのバージョン(最大4.00.1)は次のような動作を示しました: 'let rec map f = function [] - > [] |' x :: xs - > f x :: map f xs ;; 'を呼び出し、' map print_string ["a"; "b"; "c"] ;; 'これは、リスト要素を右から左へ出力します。 – chris
List.mapでここで順序を指定する必要があるのはなぜですか?私は 'f a'は前後で評価されていると思います。 –