2010-10-03 4 views
2

Tout en commentant les nouvelles fonctionnalités de ghci, je souhaitais que ghci ait la possibilité de déclarer la déclaration de type et de déclarer de nouveaux types ADT, quelqu'un m'a informé que c'était possible, et j'ai trouvé this page qui m'a dit que je pouvais faireEst-il possible de définir de nouveaux ADT dans GHCi

let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub 

Apparemment, ce même type de syntaxe fonctionne pour la correspondance de motif (ex laisser un 1 = True, a. 2 = False).

Créer des ADT le rendrait presque parfait? Est-ce que quelqu'un sait si c'est actuellement possible? Devrais-je simplement créer un fichier de travail ADT et le recharger?

post-scriptum Est-ce que quelqu'un sait s'il y a des plans pour le faire? Existe-t-il des demandes de fonctionnalités pour ghc (i)?

Aussi je connais son open source mais je ne suis pas assez intelligent actuellement pour pirater ghc (i).

Répondre

2

Non, mais vous pouvez définir de nouveaux types de HBI (un interprète plus tôt). Il y a une discussion sur la possibilité de ramener ça, via une bibliothèque ghci sur le hackage.

+2

Il faudrait des changements plus profonds dans GHC je pense; l'API GHC ne fournit pas encore assez de fonctionnalités pour l'implémenter. Ce n'est pas si difficile, juste du travail. –

4

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.

6

Cela a été ajouté de la version GHC 7.4.1, qui a été publié back in February:

[email protected]:~$ 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 
Questions connexes