newtype и instance

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

Previous post Next post
Up