无效的数据类型函数

Invalid datatype function

函数getElement 不起作用。我认为问题出在购物车类型定义上,但我不知道为什么。

datatype element = FIRE | LAND | WATER

datatype pokemon = PIKACHU | CHARMANDER | BULBASUR

datatype power = int

type cart = pokemon*power*element

val newcart = (BULBASUR, 34, WATER)

fun getElement (c: cart) = (#3)c

val element = getElement newcart

问题是你这样写的:

datatype power = int

但显然你想要的是这个:

type power = int

datatype power = int 的问题在于它声明了一个新类型 power,它只有一个构造函数,写成“int”,恰好拼写方式与类型的名称 int。例如,对于您的原始代码,值 (BULBASUR, int, WATER) 的类型为 cart,而 (BULBASUR, 34, WATER) 则没有。

当您将其固定为 type power = int 时,值 (BULBASUR, 34, WATER) 的类型将是 cart.