Types 下面一行OCaml做什么:键入reply=(string*string list*string,error_t)result;;?
我是OCaml的新手,当我遇到上面的代码时,我正试图阅读一些核心库。我不太明白它是干什么的。它似乎创建了一个Types 下面一行OCaml做什么:键入reply=(string*string list*string,error_t)result;;?,types,syntax,ocaml,Types,Syntax,Ocaml,我是OCaml的新手,当我遇到上面的代码时,我正试图阅读一些核心库。我不太明白它是干什么的。它似乎创建了一个string*string list*string的元组,在另一个带有error\u t的元组中。我不太明白最后的结果修饰符是做什么的。结果不是修饰符,而是需要两个类型变量的类型。其内容略为简化: type reply = (string * string list * string, error_t) result;; 因此,第一个类型变量指定Ok构造函数的参数类型,第二个类型变量指定
string*string list*string
的元组,在另一个带有error\u t
的元组中。我不太明白最后的结果
修饰符是做什么的。结果
不是修饰符,而是需要两个类型变量的类型。其内容略为简化:
type reply = (string * string list * string, error_t) result;;
因此,第一个类型变量指定Ok
构造函数的参数类型,第二个类型变量指定Error
构造函数的参数类型
在您看来,让参数出现在应用它们的类型之前似乎有些倒退,但这样做有一些好处。首先,int list
比list int
读起来更好,其次,如果您决定遵循正常函数应用程序的语法,您可以编写int list
而不是list(list int)
您可能还注意到元组类型和元组值的语法之间存在差异result
获取包含两种类型的元组值,本例中的第一种类型是元组
我希望这能为您澄清。相关:
type ('a, 'e) result =
| Ok of 'a
| Error of 'e