如何在Ocaml中将类内的已定义类型用作val?

时间:2019-05-28 20:56:05

标签: syntax ocaml variant

我正在写一个存储定义类型数组的类。我的代码语法有问题-我认为-。我想在数组中获取定义的类型,但是我的代码不断给出错误。

我已经创建了一个类,写下我需要的数组。我已经尝试过用这些方式编写它;


[|(Rook, Black, (Alive of (A, 1)))]
[|(Rook, Black, (Alive of A, 1))]
[|(Rook, Black, Alive of (A,1))]
[|(Rook, Black, Alive of A,1)]
[|(Rook, Black, (A,1))

但是可悲的是,它显示我的数组为chess_piece * chess_colour * (chess_letter * int)或给出操作错误。

这是我定义的类型

type chess_letter = A | B | C | D | E | F | G | H
and chess_piece = King | Queen | Rook | Bishop | Knight | Pawn
and chess_colour = Black | White 
and chess_position = Alive of chess_letter * int | Dead

数组应包含[|(chess_piece, chess_colour, chess_position)|]

1 个答案:

答案 0 :(得分:3)

构造变量Alive的值的语法为:

Alive (A, 1)

of仅用于类型定义。而且,无论是在数组内还是数组外,都无济于事。

此外,您的所有数组在语法上都不正确。前四个在结尾的|之前缺少],而最后四个都丢失了。