Je suis complètement nouveau à Haskell. Saisir les bases que j'ai commencé à travailler à travers 'Apprenez-vous un haskell pour un bon bien ". Je suis bloqué sur la simple question de chargement d'une fonction à partir d'un fichier.
Le fichier est appelé typing cible `bébé 'n'est pas un nom de module ni un fichier source. p>
BlockQuote> Je travaille sur un Mac et j'ai créé mon idée ce que je fais mal? p> p> baby.hs code> et contient la fonction p>
/ users / me code>. P>
: charger bébé code> dans ghci, je reçois l'erreur suivante: p> < BlockQuote>
baby.hs code> fichier à l'aide de texteEdit défini pour produire un fichier texte / UTF-8. Je pense que mon répertoire à domicile est
/ utilisateurs / moi code> Bien que je ne sois pas sûr comment vérifier cela de GHCI, c'est à partir de laquelle je vérifie de bash avant d'exécuter GHCI. P>
5 Réponses :
Vous manquez la ligne de module. La première ligne de bébé.hs devrait être aussi loin que sinon, votre fonction ne sait pas ce que Doubleme code> est concerné, vous êtes manquant déclarant
x code> comme argument à La fonction. p>
x code> est. P> p>
La ligne de module est bonne pratique, mais ce n'est pas nécessaire pour ce cas simple. Cela devrait fonctionner sans elle.
Toutes mes excuses, l'erreur de Doubleme était une faute de frappe dans la question. Le problème était que le fichier était vraiment appelé baby.hs.stxt mais je n'ai pas tapé que le Finder cache la partie .txt pour une raison quelconque.
Essayez d'utiliser le chemin complet, par exemple: Vous devez également utiliser des chemins relatifs. Essayez de naviguer dans le répertoire que Lorsque vous obtenez cela fonctionne, essayez de partir en quittant le baby.hs code> est en premier: p>
. HS code>. Je ne suis pas sûr à 100% dans quelles circonstances fonctionnent. P> p>
Vous pouvez donner : charger code> un nom de fichier (incluant toujours le suivi
.hs code> ou
.LHS code>) ou un nom de module (qui doit commencer par un capital (qui doit commencer par un capital lettre).
@ Dave4420: Vous pouvez omettre le trailing .hs code> à partir de noms de fichiers. GHCI est assez intelligent pour essayer quelques variantes.
Merci. Trouvé le problème à la fin, mon fichier était vraiment appelé baby.hs.txt, bien que Finder cache le .txt
Comme @ClintM suggère, corrigez d'abord votre fonction Doubleme. Ce que vous avez donnera des erreurs --- mais pas les erreurs que vous rapportez.
Le moyen le plus simple d'obtenir GHCI de trouver votre fichier est de vous assurer de démarrer GHCI à partir du même répertoire Votre fichier est enregistré. Ouvrez un Fenêtre Terminal et Type P>
cd /Users/me ls
Merci, tapant LS a montré le problème: mon fichier a vraiment été appelé baby.hs.txt! TextEdit semble ajouter un suffixe .txt même si vous écrasez l'extension avec .HS et Finder n'affiche pas le .txt juste la .hs. Il semble afficher .txt pour les fichiers TextEdit normaux, donc je suppose que cela fait quelque chose comme afficher le premier .Suffix et cacher les autres.
@Alec: Ouch. Trouvez un meilleur éditeur. Même si vous ne voulez pas prendre le temps d'apprendre l'un des ouvriers classiques (VIM ou EMACS), il existe des tonnes de bons éditeurs de texte pour OSX. La surbrillance de la syntaxe est un must.
@alec: "Le problème était que le fichier était vraiment appelé baby.hs.txt mais je n'ai pas tapé que le Finder cache la partie .txt pour une raison quelconque." P>
Vous pouvez contourner cela dans TextEdit ... P>
Sélectionnez votre fichier baby.hs.stxt p> li>
Tapez sur deux doigts pour afficher le menu contextuel P> Li>
Sélectionnez Informations pour ouvrir la boîte de dialogue Info du fichier P> LI>
Entrez baby.hs dans la zone Nom et extension P> Li>
fermeture de la boîte de dialogue p> li>
Une autre boîte de dialogue demande si vous voulez vraiment que l'extension .Hs p> li>
Confirmez que vous faites et que vous êtes prêt à aller p> li> ul>
Essayez d'ouvrir le fichier texte avec GHCI, puis tapez votre commande et fonctionne p>