2014-01-19 127 views
-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 

回答

1

那么,像'a -> 'a s这样的类型是有道理的。你可以看到参数是如何工作的。像('a -> 'a s) -> 'c t这样的类型对我来说没有意义。我没有看到'c类型应该来自哪里。 'a -> 'b s也是如此。我看不到'b应该来自哪里。像这样的类型通常与实际上不会返回的代码(未定义代码,引发异常的代码等)关联。

这是(非常)可能有GADT的一个微妙的,我不明白,但也许这将有助于至少一点。

+0

所以我想我想要完成的是有一个函数类型在城市,可以应用。 –