Haskell: вопрос синтаксиса для начинающих - PullRequest
4 голосов
/ 05 июня 2011

очень простой вопрос от ученика Haskell.Я работаю над И еще одним учебным пособием по Haskell , и я застрял на простой практике синтаксиса.Код, приведенный ниже: Когда я копирую и вставляю его (из 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 Ответ

3 голосов
/ 05 июня 2011

Нет синтаксической ошибки, которую я могу увидеть или воспроизвести:

$ 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 - плохая идея, поскольку они приводят к непреднамеренным и неразборчивым синтаксическим ошибкам.

...