是否可以在GHCi中定义新的ADT

Rom*_*her 2 interpreter haskell types ghci algebraic-data-types

在评论ghci中的新功能时,我希望ghci能够声明类型声明并声明新的ADT类型,有人告知它确实可行,并且在搜索之后我发现 这个页面告诉我我可以做

let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub
Run Code Online (Sandbox Code Playgroud)

显然,相同类型的语法适用于模式匹配(例如,让a 1 = True; a 2 = False).

创建ADT会让它几乎完美吗?有谁知道目前是否可能?我应该制作ADT临时文件并重新加载吗?

PS有谁知道是否有任何计划这样做?是否有ghc(i)的功能请求?

我也知道它的开源,但我目前还不够聪明,无法攻击ghc(i).

scl*_*clv 6

需要注意的是,你还可以做明确的多行代码在ghci中与:{:}: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html


jav*_*ard 6

自1983 年2月发布的GHC 7.4.1版本开始添加:

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
Run Code Online (Sandbox Code Playgroud)