Na stronie 321 Real World HaskellDlaczego można pominąć konstruktora, odwołując się do typów liczb owiniętych typu new?
Są te kody,
...
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype AInt = A { unA::Int }
deriving (Show, Eq, Num)
instance Monoid AInt where
mempty = 0
Moja dezorientacja dlatego jest
mempty = 0
ale nie
mempty = A 0
?
Zauważyłem również, że zarówno
ghci> 0 :: AInt
i
ghci> A 0 :: AInt
mi dać taką samą odpowiedź
A { unA = 0 }
Czy ktoś mógłby mi powiedzieć, jaka jest różnica między tezami dwa?
Więc to jest ten sam powód, dla którego możemy robić zarówno '1 :: Float' i' 1 :: Int'? – Znatz
@Znatz: Tak. Ponieważ 'AInt' jest w' Num', może używać literałów takich jak 'Float',' Int' i mnóstwo innych typów. –
: Wielkie dzięki! – Znatz