這是我再次:)。我嘗試編寫一個程序,將一個可以被5整除的行拷貝到另一個文件中。這裏是代碼(對不起,波蘭名):可被5整除的複製行
import IO
przepiszConHelper :: Handle -> Handle -> Integer -> Integer -> IO()
przepiszConHelper wejscie wyjscie liczba licznik = do
eof <- hIsEOF wejscie
if eof then return()
else
linia <- hGetLine wejscie
if (mod licznik liczba) == 0 then
hPutStrLn wyjscie linia
przepiszConHelper wejscie wyjscie liczba (licznik + 1)
przepiszCon :: String -> String -> Integer -> IO()
przepiszCon wejscie wyjscie liczba = do
wej <- openFile wejscie ReadMode
wyj <- openFile wyjscie WriteMode
przepiszConHelper wej wyj liczba 0
hClose wej
hClose wyj
main = przepiszCoN "wejscie.txt" "wyjscie.txt" 5
我認爲它應該工作...但我得到一個奇怪的錯誤:
przepisz.hs:6:9:
Parse error in pattern: if eof then return() else linia
這是沒有意義的我。我在其他程序中一直使用相同的表達方式,並且它的工作方式非常糟糕。我試圖刪除這些行,並用不同的縮進來編寫它們(我記得之前我有一些空白問題)。但我仍然得到同樣的錯誤:(
--edit
OK,我第一個錯誤......它只是else do
而不是else
但這裏談到另一個問題:
przepisz.hs:11:25: parse error on input `przepiszConHelper'
FWIW,標準庫中'when'的位置在'Control.Monad'模塊中:'import Control.Monad(when)' – luqui
@luqui:哦,麻煩了。這不是在前奏中?我的'.ghci'文件再次讓我誤入歧途。 –