无效的数据类型功能

时间:2018-12-06 20:46:36

标签: types sml

函数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

1 个答案:

答案 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