[英]f# generating a next value function
给定一个列表 [1, 2] 我正在尝试创建一个匿名 function 生成一个元组(下一个值 * 一个 function 生成下一个值)......类似于
f = createFunc([1; 2])
(v1, f1) = f() //v1 = Some 1
(v2, f2) = f1() //v2 = Some 2
(v3, f3) = f2() //v3 = None
在 Elixir 中我可以很容易地做到这一点,但是在 F# 中我的头撞到了墙上。 任何指点都感激不尽。 到目前为止,我的尝试看起来像:
let top_and_tail (l: list<'a>): (Option<'a> * list<'a>) =
match l with
| [] -> (None, [])
| h :: t -> ((Some h), t)
let rec createFun l =
fun() ->
let (h, t) = top_and_tail(l)
(h, createFun(t))
尝试在 function 的签名中添加类型注释。 它的返回类型取决于l
的长度。 您可以通过定义递归类型来解决它:
data Ret a =
| End of a
| KeepGoing of a * (unit -> Ret a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.