代码之家  ›  专栏  ›  技术社区  ›  Roman A. Taycher

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

  •  2
  • Roman A. Taycher  · 技术社区  · 15 年前

    this page 告诉我我可以

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

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

    创建adt会使它几乎完美吗?有人知道现在是否可能吗?

    有人知道有没有这样的计划吗?是否有ghc(i)的功能请求?

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

    4 回复  |  直到 8 年前
        1
  •  2
  •   Don Stewart    15 年前

    不,但是您可以在hbi(早期的解释器)中定义新类型。有人在讨论如何通过一个关于黑客攻击的ghci图书馆把这个带回来。

        3
  •  7
  •   javawizard    12 年前

    这是自发布的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
    
        4
  •  4
  •   sepp2k    15 年前

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

    所以是的,你需要把这些定义放到一个文件里。

    推荐文章