再び私です:)。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
私はそれがうまくいくはずだと思います...しかし私は1つの奇妙なエラーを受け取ります:
przepisz.hs:6:9:
Parse error in pattern: if eof then return () else linia
それは私には意味がありません。私は別のプログラムで同じ表現を使用していましたが、それは害のように機能しました。これらの行を削除して、異なるインデントで書き込もうとしました(以前、空白に問題があったことを覚えています)。しかし、それでも同じエラーが発生します:(。
- 編集
OK、最初のエラーがあります...それはのelse do
代わりですelse
。しかし、ここに別の問題があります。
przepisz.hs:11:25: parse error on input `przepiszConHelper'