相关疑难解决方法(0)

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

当我尝试定义一个新类型时,我在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'

我究竟做错了什么?

haskell ghci

36
推荐指数
4
解决办法
8788
查看次数

如何在Haskell中正确使用monadic表达式而不会出现解析错误?

我在Windows 7上运行GHC版本7.8.3.

好吧,这不是关于花哨的代码片段.我只是想在这里不是一个菜鸟,实际上用一种模糊地类似于副作用语言结构的方式编译.

我有以下代码:

main = 
    do {
    let x = [0..10];
    print x
}
Run Code Online (Sandbox Code Playgroud)

我在这里学到,关键字do对于花哨的monadic表达式来说是一种花哨的语法糖.当我尝试编译它时,我收到以下错误:

main.hs:4:1: parse error on input 'print'
Run Code Online (Sandbox Code Playgroud)

我在其他问题中已经了解到,Haskell中的标签是邪恶的,所以我试图省略它们:

main = 
    do {
let x = [0..10];
print x
}
Run Code Online (Sandbox Code Playgroud)

而且我失败了,因为解析错误仍然存​​在.

我也在这里学到,印刷品是花式等价物的语法糖:

main = 
    do {
    let x = [0..10];
    putStrLn $ show x 
}
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个错误:

main.hs:4:9: parse error on input 'putStrLn'
Run Code Online (Sandbox Code Playgroud)

试着面对我的绝望,我试着在阅读这个答案之后省略了let关键字:

main = 
    do {
    x = [0..10];
    print x 
}
Run Code Online (Sandbox Code Playgroud)

然后我得到:

main.hs:4:1: parse error on input '=' …
Run Code Online (Sandbox Code Playgroud)

monads haskell

5
推荐指数
3
解决办法
153
查看次数

输入"="错误时出现解析错误

import Data.Char (digitToInt)

let f [] = []
     f ('\n':',':a) = f ('\n' : a)  
     f (a:b) = a : f b

main :: IO ()

main = do
     ln<-getLine
     f ln
     print dp
Run Code Online (Sandbox Code Playgroud)

在输入`='上得到解析错误

为什么会这样?

haskell

1
推荐指数
1
解决办法
144
查看次数

标签 统计

haskell ×3

ghci ×1

monads ×1