J.B*_*.B. 1 ocaml static-typing pattern-matching parametric-polymorphism
我实际上正在寻找一个带有签名的函数,'a -> string它将给定的多态类型转换为字符串.我已经想过类似的东西
let func elem = match elem with
| int -> string_of_int elem ...
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮助我,谢谢!
OCaml中的类型不匹配,这是一个功能!这种限制导致参数化.
简单来说,如果一个函数,f对于类型'a -> string,它的类型承诺可以处理任何可能的类型,过去和未来.换句话说,该函数f不能对其参数的内容做出任何假设.
因此,唯一诚实的可能性是不要尝试从参数中读取任何内容,而只是返回一个字符串
let f _x = "x?"
Run Code Online (Sandbox Code Playgroud)
可能,我们可以阅读一些具有功能的全球状态 g
let f _x = g ()
Run Code Online (Sandbox Code Playgroud)
例如
let counter = ref 0
let f _x = incr counter; string_of_int !counter
Run Code Online (Sandbox Code Playgroud)