OCaml 中作为类型的函数签名
Function signature as type in OCaml
有没有办法声明类似
的东西
type do = ('a -> 'b)
在 OCaml 中?具体来说,将函数签名声明为类型
对于自由类型'a
和'b
,'a -> 'b
不是任何行为良好的OCaml函数的类型,因为它要求函数产生任意类型的值.
因此,您不能为具有未绑定参数的类型命名:
# type uabfun = 'a -> 'b
Error: Unbound type parameter 'a
如果你使用特定的类型,给它起一个名字是没有问题的:
# type iifun = int -> int;;
type iifun = int -> int
如果type类型'a
和'b
是参数(而不是free),也没有问题:
# type ('a, 'b) abfun = 'a -> 'b;;
type ('a, 'b) abfun = 'a -> 'b
有没有办法声明类似
的东西type do = ('a -> 'b)
在 OCaml 中?具体来说,将函数签名声明为类型
对于自由类型'a
和'b
,'a -> 'b
不是任何行为良好的OCaml函数的类型,因为它要求函数产生任意类型的值.
因此,您不能为具有未绑定参数的类型命名:
# type uabfun = 'a -> 'b
Error: Unbound type parameter 'a
如果你使用特定的类型,给它起一个名字是没有问题的:
# type iifun = int -> int;;
type iifun = int -> int
如果type类型'a
和'b
是参数(而不是free),也没有问题:
# type ('a, 'b) abfun = 'a -> 'b;;
type ('a, 'b) abfun = 'a -> 'b