May 29, 2008 02:46
доброго времени суток
скажите, почему при вот такой декларации типа (котрую компилятор пропускает без каких-либо возражений) :
newtype MyInt = MyInt Int
instance Eq MyInt
выражение вида
(MyInt 1) == (MyInt 2) приводит к stack overflow ?
в принципе проблема решается явной декларацией функции (==) :
newtype MyInt = MyInt Int
instance Eq MyInt where
(==) (MyInt l) (MyInt r) = l == r
но тем не менее поведение несколько непонятное. почему так ?
type theory,
haskell