我确信我错过了一些东西,但是布尔值在哪里?
let iter t ~f =
let rec loop !t = function
|Some element -> ~f element.value; loop element.next
|None -> ()
期望单位,iter 类型为 bool:
('a 元素选项 -> 单位) ref -> f:('a -> 'b) -> bool
也与这个版本相比
let iter t ~f =
let rec loop = function
|Some element -> f element.value; loop element.next
|None -> ()
in loop !t
为什么'a element option ref vs. ('a element option -> unit)?
您的第一个示例不是有效的 OCaml 代码,因此很难说太多。由于它不是有效的代码,因此它没有类型。除了将其更改为第二个示例之外,我没有找到解决此问题的方法:-)
第一个示例的问题:
1. !t is invalid syntax for a parameter name
2. A function named loop is defined but never called