如何在 class 中使用定义的类型作为 Ocaml 中的 val?

How to use a defined type inside a class as a val in Ocaml?

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

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


[|(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)|]

构造变量 Alive 值的语法是:

Alive (A, 1)

of 仅在类型定义中使用。而且无论在数组内部还是外部都没有区别。

另外,none 个数组在语法上是正确的。前四个在终止 ] 之前缺少一个 |,最后两个都缺少。