为什么这个 OCaml 中的输出类型 bool 很有趣?

问题描述 投票:0回答:1

我确信我错过了一些东西,但是布尔值在哪里?

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)?

function types ocaml
1个回答
0
投票

您的第一个示例不是有效的 OCaml 代码,因此很难说太多。由于它不是有效的代码,因此它没有类型。除了将其更改为第二个示例之外,我没有找到解决此问题的方法:-)

第一个示例的问题:

1. !t is invalid syntax for a parameter name
2. A function named loop is defined but never called
© www.soinside.com 2019 - 2024. All rights reserved.