模块中函数声明的公共签名是当最后一个参数具有主状态(Module.t)的类型时。就像在“列表”模块里一样。此表单打开使用'|>‘运算符的能力,如下所示: |> List.map ((-)1)但是‘选项’模块中的函数'bind‘并不遵循这种形式。我用参数的相反顺序声明了函数'opt_bind‘。
let opt_bind = F
我最近一直在使用丘奇编码,当我看到一个典型的类型时 ChurchMaybe { runChurchMaybe :: forall r . r -> (a -> r) -> r }
看起来,具有存在类型(runChurchMaybe)的函数的行为可能类似于其返回类型中的多态函数。,因为它总是返回lambda。但是,此lambda可以充当实际返回值的代理,上下文现在可以通过传递适当的构造函数来确定该代理实