我想创建一个从 1 到 的整数列表n
。我可以在 Python 中使用range(1, n+1)
,并在 Haskell 中使用:take n (iterate (1+) 1)
.
正确的 OCaml 习惯用法是什么?
我不知道有什么习惯用法,但这里有一个使用中缀运算符的相当自然的定义:
# let (--) i j =
let rec aux n acc =
if n < i then acc else aux (n-1) (n :: acc)
in aux j [] ;;
val ( -- ) : int -> int -> int list = <fun>
# 1--2;;
- : int list = [1; 2]
# 1--5;;
- : int list = [1; 2; 3; 4; 5]
# 5--10;;
- : int list = [5; 6; 7; 8; 9; 10]
或者,推导式语法扩展 http://dutherenverseauborddelatable.wordpress.com/downloads/comprehension-for-ocaml/(给出语法[i .. j]
对于上述内容)可能会包含在未来版本中OCaml 的“社区版” http://forge.ocamlcore.org/projects/batteries/,这样这可能会成为惯用语。不过,如果您是该语言的新手,我不建议您开始使用语法扩展。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)