在评论ghci中的新功能时,我希望ghci能够声明类型声明并声明新的ADT类型,有人告知它确实可行,并且在搜索后我找到了 this page告诉我,我可以做到
let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub
显然,相同类型的语法适用于模式匹配(例如,让1 = True; 2 = False)。
创建ADT会让它几乎完美吗?有谁知道目前是否可能? 我应该制作ADT临时文件并重新加载吗?
P.S。有谁知道是否有任何计划这样做?是否有ghc(i)的功能请求?
我也知道它的开源,但我目前还不够聪明,无法攻击ghc(i)。
答案 0 :(得分:6)
请注意,您还可以使用:{
和:}
在ghci中执行显式多行代码:
http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html
答案 1 :(得分:6)
自GHC 7.4.1版本开始添加,已发布back in February:
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
答案 2 :(得分:4)
不,你不能在ghci中定义新类型。
所以是的,您需要将这些定义放在一个文件中。
答案 3 :(得分:2)
不,但您可以在hbi中定义新类型(早期的解释器)。有关通过一个关于hackage的ghci库来恢复这个问题的讨论。