Desidero ridefinire diversi operatori aritmetici in Haskell per renderli più estensibili e generici.Haskell - Ridefinizione (occultamento) degli operatori aritmetici
E.g.
class Mul a b c | a b -> c where
(*) :: a -> b -> c
Questo sembra funzionare in combinazione con
import Prelude hiding ((*))
nascondendo la *
operatore standard. Ma, naturalmente, tutte le moltiplicazioni soliti lavorare così, quindi mi piacerebbe avere definire qualcosa come
instance (Num t) => Mul t t t where
(*) = ??
Come posso accedere alla *
dell'operatore originale (Prelude.(*)
non funziona) qui e come devo definire il tipo di istanza in modo che 1 * 1
non sia in conflitto con la Limitazione di monomorfismo ?
Modifica -
import qualified
è un buon suggerimento, grazie.
Ma sfortunatamente questo mi ha costretto a portare esplicitamente nello tutti i metodi standard. Voglio solo avere la possibilità di ridefinire determinati vincoli lasciando il resto invariato.
Quindi c'è una combinazione di entrambi? Qualcosa come
import Prelude qualified ((*))
Grazie - Questo è quello che stavo cercando. – Dario
Ottimo! Prego. –