Je suis un débutant Haskell, essayant d'accomplir un exercice de César Cipher.
dans un fichier alors je tente de charger cela dans GHCI en tapant .hs code>, j'ai défini la fonction suivante: p> : l caeser.hs code> et je reçois le message d'erreur suivant: P> [1 of 1] Compiling Main ( caeser.hs, interpreted )
caeser.hs:2:12: Not in scope: `ord'
caeser.hs:2:20: Not in scope: `ord'
3 Réponses :
Ce sont des fonctions standard, mais vous devez d'abord les importer à partir du bon module. Ajouter à ceeer.hs et il devrait fonctionner. P> Voir aussi http://www.hakell.org/ghc/docs/latest/html/libries/index.html pour l'ensemble complet de bibliothèques qui expédient avec le compilateur. p> p>
Est-il considéré comme une mauvaise pratique d'utiliser data.char.ord code> là au lieu de l'importer, esp. Si ord code> n'est utilisé qu'une seule fois? Je comprends que cela rend la lecture du programme plus difficile en "cacher" les importations dans le corps du programme.
@ Holyiltiz Je vous suggère de demander cela comme une question distincte, comme un compromis compliqué. La pratique habituelle consiste à importer des bibliothèques communes non qualifiées, à moins d'avoir des afflits de noms (par exemple Importer des données qualifiés.map comme m code>).
Si vous utilisez hoogle pour rechercher ORD Vous verrez que cette fonction habite / est exporté par le Data.Char module. Il suffit donc d'importer ce module: apprendre à utiliser hoogle. Beaucoup de questions de haskell demandées sont le résultat de personnes qui ne connaissent pas hoogle ... et parfois ils ne doivent pas savoir sur Google non plus (de ne pas vous décourager de demander, mais utilisez HOOGLE). P> L'avenir, pour les bibliothèques plus grandes pouvant avoir des noms contradictoires avec des fonctions existantes, vous pouvez limiter votre importation à la fonction que vous vous souciez de: p> ou importer (une troisième méthode utilisant qualifié code>: p> masquant code>, fonctionne mais je déteste cette méthode) p> p>
J'ai vérifié Hoogle, mais je ne savais pas quoi faire avec les informations que j'ai reçues. Merci.
dans "haskell 2010", Vous voulez donc in "haskell 98", Un excellent outil pour trouver des fonctions et leurs modules est p>
ord code> vit dans data.char code> p>
importer des données.char code> ou import data.char (ord) code> p> p>
ord code> peut être trouvé dans le module char code>. p>
Je cherchais à charger une bibliothèque à partir de la ligne de commande GHCI, j'ai trouvé que vous pouvez utiliser cette commande à la ligne de commande:
: m data.char code>