2013-04-20 12 views

Odpowiedz

9

Uważam, że jest tam, aby zagwarantować kolejność funkcji aplikacji na mapie. Kolejność oceny prostych wyrażeń w OCaml jest nieokreślona, ​​więc bez zastosowania let kolejność aplikacji f do elementów listy byłaby nieokreślona. Ponieważ OCaml nie jest czystym językiem, naprawdę chciałbyś, aby zamówienie zostało określone (f jest wywoływane najpierw na początku listy, itd. W rekursywnie).

+1

Rzeczywiście, każda wersja OCaml, którą wypróbowałem (do 4.00.1) wykazała następujące zachowanie: Zdefiniuj 'map' przez' let rec map f = function [] -> [] | x :: xs -> f x :: map f xs ;; 'a następnie wywołaj' map print_string ["a"; "b"; "c"] ;; '. Spowoduje to wypisanie elementów listy od prawej do lewej. – chris

+0

Dlaczego konieczne jest określenie kolejności tutaj w List.map? Myślę, że "f a" oceniane przed lub po tutaj nie ma znaczenia, prawda? –

Powiązane problemy