Haskell:初学者语法问题

时间:2011-06-05 19:16:14

标签: haskell syntax indentation

来自Haskell学习者的一个非常简单的问题。我正在通过Yet Another Haskell Tutorial工作,我坚持一个简单的语法练习。下面给出的代码:当我复制并粘贴它(从pdf)然后调整缩进它工作正常,但是当我输入编辑器(在我的情况下是Notepad ++)时,它会抛出以下错误:

Guess.hs:8:9: parse error on input ´hSetBuffering´

我确保我没有混合标签和空格(4个空格),我没有在书中找到拼写错误。我确信这是一个非常简单的错误,所以感谢任何意见。

Nebelhom

以下是代码:

module Main
    where

import IO
import Random

main = do
    hSetBuffering stdin LineBuffering
    num <- randomRIO (1::Int, 100)
    putStrLn "I'm thinking of a number between 1 and 100"
    doGuessing num

doGuessing num = do
    putStrLn "Enter your guess:"
    guess <- getLine
    let guessNum = read guess
    if guessNum < num
        then do putStrLn "Too low!"
                doGuessing num
    else if read guess > num
        then do putStrLn "Too high!"
                doGuessing num
    else do putStrLn "You Win!"

1 个答案:

答案 0 :(得分:3)

我没有看到或重现的语法错误:

$ ghci A.hs
GHCi, version 7.0.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling Main             ( A.hs, interpreted )
Ok, modules loaded: Main.

这意味着它可能是标签。你在某处插入了一个标签吗?然后使用4个空格进行缩进?标签在Haskell中通常是一个坏主意,因为它们会导致无意识的,无法理解的语法错误。