代码之家  ›  专栏  ›  技术社区  ›  titaniumdecoy Mr. T

为什么我不能在ghci中定义一个新类型?

  •  36
  • titaniumdecoy Mr. T  · 技术社区  · 16 年前

    Prelude> data Point = Pt Int Int
    <interactive>:1:0: parse error on input `data'
    Prelude> let data Point = Pt Int Int
    <interactive>:1:4: parse error on input `data'

    4 回复  |  直到 16 年前
        1
  •  28
  •   applicative    16 年前

    titaniumdecoy let a = f b do 中的符号 IO

    palindromize :: IO ()
    palindromize = do
      a <- readFile "foo.txt"
      let b = reverse a
      putStrLn (a ++ b)
    

    类似地,在GHCi中重新定义表达式时,类似于在 完全合法的符号:

    makeMess :: IO ()
    makeMess = do
       a <- readFile "foo.txt"
       let b = reverse a
       putStrLn (a ++ b)
       let b = a
       putStrLn (a ++ b)
    

    没人会的 声明数据类型 在这样一个序列的中间,但是会在模块的其他地方做。我可能已经猜到有某种理论上的反对意见,但唐S.的话表明没有。

        2
  •  23
  •   Alexey Romanov    9 年前
        3
  •  13
  •   Don Stewart    16 年前

    仅供历史参考 HBI Haskell interactive environment 允许在命令行中使用完整的Haskell,包括类型、类等。没有 GHCi不能进行类似的操作,用户可以编写一个前端到GHC-API来支持这个。。。

        4
  •  12
  •   Amber    16 年前

    :load 将文件导入ghci。

    推荐文章