函数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
答案 0 :(得分:1)
问题是您写了这个:
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
。