如何将多态值转换为字符串



我实际上正在寻找一个具有签名的函数,如'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

最新更新