Je veux redéfinir plusieurs opérateurs arithmétiques dans Haskell afin de les rendre plus extensibles et génériques.Haskell - Redéfinir (masquer) les opérateurs arithmétiques
E.g.
class Mul a b c | a b -> c where
(*) :: a -> b -> c
Cela semble fonctionner en combinaison avec
import Prelude hiding ((*))
cacher la norme opérateur *
. Mais bien sûr, tous les multiplications habituelles doivent travailler, donc je dois définir quelque chose comme
instance (Num t) => Mul t t t where
(*) = ??
Comment puis-je accéder à l'opérateur *
d'origine (Prelude.(*)
ne fonctionne pas) ici et comment dois-je définir le type d'instance de telle sorte que 1 * 1
ne soit pas en conflit avec le Monomorpism Restriction?
Modifier -
import qualified
est un bon conseil, merci.
Mais malheureusement, cela m'a forcé à mettre explicitement toutes les méthodes standard dans la portée. Je veux juste avoir la possibilité de redéfinir certaines liaisons en laissant le reste inchangé.
Alors, y a-t-il une combinaison des deux? Quelque chose comme
import Prelude qualified ((*))
Merci - C'est ce que je cherchais. – Dario
Super! Vous êtes les bienvenus. –