程序错误:Prelude.read:没有解析

时间:2011-09-05 05:08:26

标签: haskell

我是haskell的新手,我在做我的任务,关于银行系统,我想在注册新帐户时收到此错误程序错误:Prelude.read:no parse

代码如下:

createAcc :: IO()
createAcc = do
        new <- readFile "db.txt"                          --Database named db--
        let new1 = length (func new)
        putStrLn " Enter your Name : "      --write your name--
        name <- getLine
        putStrLn " Enter Balance :"         --enter minimum balance to deposit--
        bal <- getLine
        let bal1 = read bal :: Int                         
        store <- readFile "db.txt"                    --entries comes in  database--
        let store1 = func store
        let store2 = store1 ++ [(new1+1,name,bal1)]
        writeFile "db.txt" (show store2)
func :: String -> [(Int,String,Int)] 
func x = read x:: [(Int,String,Int)]

1 个答案:

答案 0 :(得分:1)

db.txt中可能没有任何内容,因此读取失败。尝试使用文本“[]”初始化文件。

另外,你的方法中有很多要注意的事项......懒惰的IO不适合编写可靠的程序。您可以在网上找到更多信息,但实际上只有在您实际访问文件内容时才会发生读取,例如与func。至少,您应该使用deepseq强制读取发生在您期望的位置。