6
votes

Erreur lors du chargement de la fonction du fichier dans GHCI

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é baby.hs et contient la fonction xxx < p> Et rien d'autre. Je l'ai enregistré dans / users / me .

typing : charger bébé dans ghci, je reçois l'erreur suivante: < BlockQuote>

cible `bébé 'n'est pas un nom de module ni un fichier source.

Je travaille sur un Mac et j'ai créé mon baby.hs fichier à l'aide de texteEdit défini pour produire un fichier texte / UTF-8. Je pense que mon répertoire à domicile est / utilisateurs / moi 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.

idée ce que je fais mal?


0 commentaires

5 Réponses :


2
votes

Vous manquez la ligne de module. La première ligne de bébé.hs devrait être xxx

aussi loin que Doubleme est concerné, vous êtes manquant déclarant x comme argument à La fonction. xxx

sinon, votre fonction ne sait pas ce que x est.


2 commentaires

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.



2
votes

Essayez d'utiliser le chemin complet, par exemple: xxx

Vous devez également utiliser des chemins relatifs. Essayez de naviguer dans le répertoire que baby.hs est en premier: xxx

Lorsque vous obtenez cela fonctionne, essayez de partir en quittant le . HS . Je ne suis pas sûr à 100% dans quelles circonstances fonctionnent.


3 commentaires

Vous pouvez donner : charger un nom de fichier (incluant toujours le suivi .hs ou .LHS ) 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 à 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



4
votes

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


2 commentaires

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.



0
votes

@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."

Vous pouvez contourner cela dans TextEdit ...

  • Sélectionnez votre fichier baby.hs.stxt

  • Tapez sur deux doigts pour afficher le menu contextuel

  • Sélectionnez Informations pour ouvrir la boîte de dialogue Info du fichier

  • Entrez baby.hs dans la zone Nom et extension

  • fermeture de la boîte de dialogue

  • Une autre boîte de dialogue demande si vous voulez vraiment que l'extension .Hs

  • Confirmez que vous faites et que vous êtes prêt à aller


0 commentaires

0
votes

Essayez d'ouvrir le fichier texte avec GHCI, puis tapez votre commande et fonctionne


0 commentaires