Неверная функция типа данных - PullRequest
0 голосов
/ 06 декабря 2018

Функция 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 голосов
/ 07 декабря 2018

Проблема в том, что вы написали это:

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.

...