Dog*_*Dog 5 syntax ocaml functional-programming
在OCaml 3.12.1中,List.map编写如下:
let rec map f = function
[] -> []
| a::l -> let r = f a in r :: map f l
Run Code Online (Sandbox Code Playgroud)
我希望最后一行写成| a::l -> f a :: map f l,但相反,有一个看似无用的let绑定.为什么?
我相信它可以保证地图的功能应用顺序.OCaml中简单表达式的评估顺序是未指定的,因此如果不指定列表元素的let应用顺序f将是未指定的.由于OCaml不是纯语言,因此您真的希望指定顺序(f首先在列表的头部调用,依此类推).
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |