多种参数类型

rom*_*run 7 ocaml

我想写这样的东西:

type 'a 'b xxx = {aaa: 'a: bbb: 'b: ccc: int};;

它不编译.它只是语法错误,还是它们不允许类型上有多个参数?那么为什么 ?

nlu*_*oni 15

在ML中,多个类型参数写在括号之间并用逗号分隔,如下所示:

type ('a,'b) xxx = {aaa: 'a; bbb: 'b; ccc: int; }
Run Code Online (Sandbox Code Playgroud)

  • nlucaroni:我相信这只是语法。多参数类型就是由多个参数参数化的类型,编译器只需要知道有多少个参数。元组类型是不同的——它们定义值的“结构”。希望我没有把术语弄乱:) (2认同)

ygr*_*rek 5

其实你可以这样写,修改后的语法:

        Objective Caml version 3.11.2

# #load "dynlink.cma";;
# #load "camlp4r.cma";;
    Camlp4 Parsing version 3.11.2

# type xxx 'a 'b = { aaa : 'a; bbb: 'b; ccc: int};
type xxx 'a 'b = { aaa : 'a; bbb : 'b; ccc : int }
Run Code Online (Sandbox Code Playgroud)