Est-il possible de définir de nouvelles ADTs dans GHCi
-
27-09-2019 - |
Question
En commentant sur les nouvelles fonctionnalités dans ghci je voulais que ghci avait la capacité de déclaration de type Déclarez et déclarant nouveaux types d'ADT, quelqu'un a informé qu'il était en effet possible, et après la recherche que je trouve cette page qui m'a dit que je pourrait faire
let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub
Il semble que même type de syntaxe fonctionne pour la correspondance de motif (ex laisser un 1 = True, a. 2 = False).
Création d'ADTs serait presque parfait? Est-ce que quelqu'un sait s'il est actuellement possible? Dois-je faire un fichier zéro ADT et le recharger?
P.S. Est-ce que quelqu'un sait s'il y a des plans pour le faire? Y at-il des demandes pour GHC (i)?
Aussi je sais que l'open source, mais je ne suis pas assez intelligent pour pirater actuellement sur GHC (i).
La solution
Non, mais vous pouvez définir de nouveaux types de HBI (un interprète plus tôt). Il y a discussion sur ce qui porte arrière, via une bibliothèque ghci sur hackage.
Autres conseils
Notez que vous pouvez également faire un code explicite multiligne dans ghci avec :{
et :}
:
http://www.haskell.org/ghc /docs/6.12.2/html/users_guide/interactive-evaluation.html
Cela a été ajouté de la version GHC 7.4.1, qui a été publié en Février :
jcp@butler:~$ ghci
GHCi, version 7.6.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> data Test = Foo | Bar | Baz deriving (Read, Show)
Prelude> Foo
Foo
Prelude> read "Bar" :: Test
Bar
Prelude> :t Baz
Baz :: Test
Non, vous ne pouvez pas définir de nouveaux types dans ghci.
Alors oui, vous aurez besoin de mettre ces définitions dans un fichier.