Haskell erreurs: “il manque un accompagnement de liaison” et “pas dans le champ d'application”
J'ai créé un morceau de code ce:
intToDigit :: Char -> Int
ord :: Char -> Int
intToDigit c = ord c - ord 'a'
Cependant, quand je le lance j'ai ce message d'erreur:
ChangeVowels.hs:2:1:
La signature de type pour `ord manque un accompagnement de liaisonChangeVowels.hs:4:16: Pas dans le champ: `ord'
ChangeVowels.hs:4:24: Pas dans le champ: `ord'
Je l'ai essayé avec Import data.char
mais qui ne fonctionne pas non plus.
Notez que la capitalisation est importante: votre ligne d'importation doit être
ou mieux,
Aussi, si vous incidemment minuscules de votre nom de fonction de sorte que vous avez intToDigit dans la déclaration de type et inttodigit dans la mise en œuvre, vous obtiendrez manque un accompagnement yada yada. J'ai appris à la dure...
import Data.Char
(ou peut-être import Data.Char hiding (intToDigit)
).ou mieux,
import Data.Char (ord)
Aussi, si vous incidemment minuscules de votre nom de fonction de sorte que vous avez intToDigit dans la déclaration de type et inttodigit dans la mise en œuvre, vous obtiendrez manque un accompagnement yada yada. J'ai appris à la dure...
OriginalL'auteur anon1 | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Vous devez fournir une implémentation de la fonction
ord
. Ici, vous avez donné une signature pourord
, mais pas de mise en œuvre.Ou vous pouvez utiliser Haskell propre
ord
fonction, c'est-àChar.ord
.OriginalL'auteur ChrisJ
Supprimer la ligne:
Ou donner une définition.
Et c'est une mauvaise idée pour le nom de votre fonction intToDigit, alors qu'il est déjà utilisé dans les Données.Char à faire le contraire de ce que vous faites.
Votre fonction est de Données.Char.digitToInt, et sa mise en œuvre travaille également avec hexadécimal:
En fait, c'est pas ce que vous avez défini... pourquoi
'a'
dans votre code?OriginalL'auteur Ptival