A pagina 321 di Real World HaskellPerché è possibile omettere la funzione di costruzione quando si fa riferimento a tipi di numeri avvolti di nuovo tipo?
Ci sono questi codici,
...
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype AInt = A { unA::Int }
deriving (Show, Eq, Num)
instance Monoid AInt where
mempty = 0
La mia confusione è per questo che è
mempty = 0
ma non
mempty = A 0
?
Ho anche notato che sia
ghci> 0 :: AInt
e
ghci> A 0 :: AInt
mi danno la stessa risposta
A { unA = 0 }
Qualcuno per favore mi dica qual è la differenza tra la tesi Due?
Quindi è la stessa ragione per cui possiamo fare sia '1 :: Float' che' 1 :: Int'? – Znatz
@Znatz: Sì. Dato che 'AInt' è in' Num', può usare i letterali come 'Float',' Int' e una tonnellata di altri tipi. –
: Grazie mille! – Znatz