In OCaml 3.12.1, List.map
è scritto come segue:Perché c'è una let in List.map di OCaml?
let rec map f = function
[] -> []
| a::l -> let r = f a in r :: map f l
mi aspetto che ultima riga da scrivere come | a::l -> f a :: map f l
, ma, invece, c'è un apparentemente inutile let
vincolante. Perché?
Infatti, ogni versione di OCaml che ho provato (fino a 4.00.1) ha mostrato il seguente comportamento: Definire 'map' da' let rec map f = function [] -> [] | x :: xs -> f x :: map f xs ;; 'e quindi chiama' map print_string ["a"; "B"; "C"] ;; '. Questo stampa gli elementi della lista da destra a sinistra. – chris
Perché è necessario specificare l'ordine qui in List.map? Penso che il fatto di essere valutato prima o dopo non abbia importanza qui, giusto? –