我实际上正在寻找一个具有签名的函数,如'a -> string
,它可以将给定的多态类型转换为字符串。我已经考虑过类似的东西了
let func elem = match elem with
| int -> string_of_int elem ...
希望有人能帮我,谢谢!
在OCaml中不可能匹配类型,这是一个功能!这种限制导致了参数性。
换句话说,如果函数f
的类型为'a -> string
,那么它的类型承诺可以处理任何可能的类型,包括过去和将来。换句话说,函数f
不能对其论证的内容做出任何假设。
因此,唯一诚实的可能性是不尝试从参数中读取任何内容,只返回一个字符串,例如
let f _x = "x?"
也许,我们可以用函数g
读取一些全局状态
let f _x = g ()
例如
let counter = ref 0
let f _x = incr counter; string_of_int !counter