3

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

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

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

创建 ADT 会使其几乎完美吗?有谁知道目前是否可行?我应该只制作一个 ADT 暂存文件并重新加载它吗?

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

我也知道它的开源,但我目前还不够聪明,无法破解 ghc(i)。

4

4 回答 4

8

这已在 GHC 版本 7.4.1 中添加,该版本于 2 月发布:

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
于 2012-11-07T06:44:03.913 回答
7

请注意,您还可以使用:{和在 ghci 中执行显式多行代码:}http ://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html

于 2010-10-03T17:44:28.990 回答
4

不,您不能在 ghci 中定义新类型。

所以是的,您需要将这些定义放在一个文件中。

于 2010-10-03T12:37:52.173 回答
2

不,但您可以在 hbi(早期解释器)中定义新类型。有关于通过关于 hackage 的 ghci 库将其恢复的讨论。

于 2010-10-03T23:24:58.053 回答