num a "? - Retrouvez les réponses et les commentaires concernant cette question" />
J'apprends Haskell. J'envoie la commande dans GHCI: : Info num code>.
-- | Basic numeric class.
--
-- Minimal complete definition: all except 'negate' or @(-)@
class Num a where
4 Réponses :
Hackage montrant classe (EQ A, show a) => num A code> est probablement un bug, mais il n'y a vraiment aucune raison pour
num a code> pour exiger
EQ A code> et
Afficher un code>. P>
Je ne suis pas d'accord avec vous sur le "vraiment non une raison".
@Bush OK, pourquoi pensez-vous que num code> doit nécessiter intrinsèquement
eq code> et
Afficher code>?
Parce que tous les chiffres doivent être équitables. En outre, il doit avoir une capacité à imprimer.
@Bush aux fins des opérations purement arithmétiques, comme num code> est; Il n'y a pas besoin de
eq code> et
Afficher code>, car aucun de ceux qui n'ont rien à voir avec l'ajout, la multiplication ou la soustraction. C'est à la place des implémentations individuelles pour gérer cela. Vous ne voyez pas
EQ code> ou
Afficher code> sur le fonctionnement code> ou
monad code> Typeclasses soit pour les mêmes raisons
Voici ce que Haskell 98 et Haskell 2010 précisent, à tort telle que possible.
@Bush, il n'y a pas de eq code> et
Afficher les instances pour les fonctions, mais les numéros de codage par les fonctions sont un Trick bien connu .
@Bush Retiens Numbers ne peut être ni comparé à l'égalité ni à convertir en une chaîne (fini).
@Augusts: pourquoi pas? Je peux sûrement comparer même un numéro irrationnel comme √2 code> de le convertir en la représentation de chaîne
"sqrt (2)" code>.
@Bergi Computing Egalité entre réels calculables est insuffisant.
@Bakuriu: OK, merci. J'ai simplifié le problème et seulement la pensée de calcul symbolique.
Je pense que l'index de recherche de Hoogle est assez ancien. P>
Vous pouvez voir que https://github.com/ghc/ghc/commit/0A40540E79223F387DB9A1756E4B
https://github.com/ghc/ghc/commit/817C4E19A4248B80F0AF7648B80F0AF764A12721B1284B39E5A P>
Je considère donc que c'est la raison de l'incohérence entre le résultat de la recherche de HOOGILE et un lien réel à Hackage. P> eq code> et
show code> Superclass est supprimé de
num code> dans ces commits de
GHC code>. < / p>
Merci. Je vois le "-Class num A => BITS A Où" et "+ classe + (EQ A, Nombre A) => BITS A Où". Comme je le comprends - "-" est en train de supprimer et "+" ajoute. Donc, je vois a été supprimé "Classe num A => BITS A Où" Row de code et ajouté la "classe (EQ A, Nombre A) => BITS A Où". Ai-je raison?
@Bush c'est vrai, et très certainement parce que bits code> doit toujours être équatable après
num code> n'est-ce pas.
Pouvez-vous ajouter et multiplier des fonctions? Certainement oui, si les fonctions donnent un numéro. P>
Il n'y a pas de Vous voulez maintenant num code> est quelque chose que vous pouvez essentiellement ajouter et multiplier. Je pense que
(+) code> devrait être un groupe , mais le Spécification ne le mentionne pas . p>
EQ code> et
Afficher l'instance code> d'instance pour fonctionner dans HASKELLL, et c'est pourquoi
num code> ne nécessite pas ces contraintes. P >
ord code> contraint aussi? Les numéros complexes sont
num code> s, mais il n'y a pas de commande qui préserve les mêmes lois que les chiffres réels. P>
Ajouter, multiplier et nier (donc soustraire).
Voici un voici un peu plus ésotérique - p> Il possède les propriétés inhabituelles que l'addition et la multiplication ne sont pas commutatives (car chacun des deux arguments peut modifier arbitrairement le État, et l'état peut être mélangé arbitrairement avec le résultat renvoyé) mais sinon il s'agit d'une instance valide de côté mathématique Remarque: em> le Dans ce cas, l'addition n'est pas commutative, elle ne peut donc pas être une bague. Ce n'est même pas un proximité de Semiing (qui est une bague avec beaucoup de restrictions enlevé) parce que cela ne satisfait pas la loi sur la distribution. Qui soulève la question - obéir aux lois de tout em> structure algébrique raisonnablement bien connue? P>
blockQuote> Les deux sont des exemples de phénomène plus général que tout phénomène plus général peut être soulevé à une instance de qui est un fait que j'aime beaucoup. p> p> Num code> instance pour laquelle vous ne pouvez pas définir sensiblement soit un
EQ code> ou
Afficher code> instance -
num code>. p>
num code> Classe des modèles généralement des structures algébriques appelées Anneaux qui ont une addition commutative et une multiplication (pas nécessairement commutative), qui répondent à certaines règles de compatibilité. P>
num code> à l'aide de
FMAP code> et
lifta2 code> - p>
Cela devrait être la réponse sélectionnée.
Ceci n'est probablement que GHC divergeant de la définition de langue officielle.