Здравствуйте, Eternity, Вы писали:
E>Статическая типизация не просто "ограничивает", а определяет смысл выражений. У меня такое ощущение, что многие просто ее неправильно воспринимают, может быть, из-за отсутствия языков с адекватной типизацией.
tnpo (Just x) = Just (Just (Just (tnpo x)))
tnpo Nothing = Just Nothing
collatz x = collatz3 x x x
collatz3 x (Just y) (Just (Just z)) = collatz3 x y z
collatz3 x y Nothing = collatz y
collatz3 x y (Just Nothing) = collatz (tnpo x)
И какой тип возвращаемого значения collatz (Just (Just (... (Just Nothing))...)? Я вот уверяю, что эта функция берет Maybe a и всегда возвращает Nothing. Докажи или опровергни :−)