Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
data [a] = [] | a:[a] — определение списка, [] и: — конструкторы, [] — имя типа
incN = MkN.(():).toList;
data () = ()
Посылка, что пропали из языка числа, конечно, хороша; но что делать, если языка пропадут списки, или, что еще лучше, алгебраические типы данных; в этом случае Haskell уже не помощник :)
data Nat = Zero | Succ Nat deriving (Eq, Show)
instance Num Nat where
Zero + a = a
a + Zero = a
a + Succ b = Succ (a + b)
Zero * a = Zero
a * Zero = Zero
a * Succ b = a*b + a
abs = id
signum Zero = 0
signum _ = 1
fromInteger 0 = Zero
fromInteger (x+1) = Succ (fromInteger x)
Реализация целочисленной арифметики на Haskell