9
votes

Comment programmer Haskell avec GHCI?

J'ai lu du matériel et j'ai une question: J'ai vu un fragment de code est comme celui-ci: xxx

dois-je taper toutes ces lignes exactement la même chose dans ghci ou dois-je créer un fichier .hs et les mettre dans, puis le charger dans le ghci?


3 commentaires

J'ai essayé les deux auparavant. L'ancien on a rencontré une erreur que le GHCI n'a pas reconnu "="; tandis que ce dernier, il n'a pas de sens que "getnthelem" se produit trois fois?


Cela a du sens. Essayez de vous démarrer Haskell Adventure avec quelques déclarations supplémentaires de base.


Je peux recommander apprenouahakell.com/starting-out#ready-set-go


3 Réponses :


13
votes

Il y a 2 façons de faire ceci:

  1. Utilisez le mode multiligne dans GHCI en réglant le drapeau comme suit: p>

    getNthElem :: Int -> [a] -> a
    getNthElem 1 xs = head xs
    getNthElem n [] = error "'n' is greater than the length of the list"
    getNthElem n xs
                   | n < 1     = error "'n' is non-positive"
                   | otherwise = getNthElem (n-1) (tail xs)
    
  2. Créez un fichier et chargez-le en tant que module pour accéder aux types et fonctions définies de celui-ci comme P>

    Prelude> :l myModule.hs
    


4 commentaires

J'ai essayé: Set + M mais j'ai toujours reçu l'erreur. Comment devrais-je faire exactement ça? Merci. :)


BTW Comment taper le code à l'aide de style de code dans les commentaires?


Si vous mettez le laissez sur sa propre ligne, vous n'avez pas besoin d'indenter le reste (en raison de la référence NondecresingNindentationDention ), qui peut être plus facile pour copier / coller. (Cela ne fonctionnera pas avec la littérate > s.)


@ Ørjanjohansen merci pour cette information!



5
votes

La chose la plus facile est de créer un fichier appelé par ex. exemple.hs code> puis démarrez GHCI à la ligne de commande et chargez le fichier

$ ghci example.hs
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
[1 of 1] Compiling Main      ( example.hs, interpreted )
Ok, module loaded: Main.
*Main> 


2 commentaires

Je suis toujours au début, je n'ai aucune idée de ce qui est un fichier Haskell alphabète. Toujours merci!


@ user3928256 La valeur par défaut dans un fichier alphabétisé est que le texte est un commentaire, plutôt que de la source, et vous devez spécifier où se trouve dans le fichier votre code source. Il est habituel de voir un fichier alphabète où il y a beaucoup plus de commentaires que le code et vous permet de mélanger différents formats, par ex. Markown and Haskell, ou repose-repos et Python afin que les générateurs de documentation soient plus faciles à faire des documents joliment formatés. Dans les fichiers alphabétisés Haskell, il est convention d'utiliser > au début de chaque ligne de code, ou vous pouvez utiliser les blocs de code de style latex et envelopper les blocs de code dans \ begin {code} - \ fin {code} tags.



9
votes

Vous pouvez écrire en 1 ligne:

> :{
| let getNthElem 1 xs = head xs
|     getNthElem n [] = error "'n' is greater than the length of the list"
|     getNthElem n xs
|       | n < 1     = error "'n' is non-positive"
|       | otherwise = getNthElem (n-1) (tail xs)
| :}
>


0 commentaires