У меня есть тип данных, который принимает число в конструкторе, и это число ДОЛЖНО быть между 1 и 5 (представлено как 0..4):
import Data.Fin
data Stars = MkStars (Fin 5)
Я хочу создать функцию, которая добавляет единицу к существующему star
, и если это уже 5 stars
, ничего не делает
Я старался
addOneStar: Stars -> Stars
addOneStar (MkStars FZ) = MkStars (FS FZ)
addOneStar (MkStars (FS x)) = if x < 3
then MkStars (FS (FS x))
else MkStars (FS x)
Но не компилируется с ошибкой:
Type mismatch between
Fin 4 (Type of x)
and
Fin 3 (Expected type)
Specifically:
Type mismatch between
1
and
0
Может кто-нибудь объяснить мне, почему возникает эта ошибка? И Как это исправить?