当我尝试定义新类型时,我在 ghci 中遇到错误:
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'
我做错了什么?
最佳答案
titaniumdecoy
,我记得当我了解到经常提到的一点时,在 GHCi 中编写“let square x = x * x”之类的东西就像编写 let a = f b
在 IO
monad 中使用 do
表示法——在这种例子中说:
palindromize :: IO ()
palindromize = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
同样,当您在 GHCi 中重新定义表达式时,有点像使用 do
表示法执行以下操作,这是完全合法的:
makeMess :: IO ()
makeMess = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
let b = a
putStrLn (a ++ b)
没有人会在这样的序列中间声明数据类型,而是会在模块的其他地方这样做。我可能猜到存在某种理论上的反对意见,但唐·S. 的评论表明不存在这种反对意见。
关于haskell - 为什么我不能在 ghci 中定义新类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126591/