-1
我想完成类似这样的事情,但我无法完全理解语法。OCaml抽象类型函数
type _ s = Var : 'a -> 'a s
type _ t =
| AA :('a -> 'a s) -> 'c t
| AB : ('a -> 'b s) -> 'c t
let apply_to x = function
| AA g -> g x
| AB g -> g x
我想完成类似这样的事情,但我无法完全理解语法。OCaml抽象类型函数
type _ s = Var : 'a -> 'a s
type _ t =
| AA :('a -> 'a s) -> 'c t
| AB : ('a -> 'b s) -> 'c t
let apply_to x = function
| AA g -> g x
| AB g -> g x
那么,像'a -> 'a s
这样的类型是有道理的。你可以看到参数是如何工作的。像('a -> 'a s) -> 'c t
这样的类型对我来说没有意义。我没有看到'c
类型应该来自哪里。 'a -> 'b s
也是如此。我看不到'b
应该来自哪里。像这样的类型通常与实际上不会返回的代码(未定义代码,引发异常的代码等)关联。
这是(非常)可能有GADT的一个微妙的,我不明白,但也许这将有助于至少一点。
所以我想我想要完成的是有一个函数类型在城市,可以应用。 –