我是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)]
答案 0 :(得分:1)
db.txt
中可能没有任何内容,因此读取失败。尝试使用文本“[]”初始化文件。
另外,你的方法中有很多要注意的事项......懒惰的IO不适合编写可靠的程序。您可以在网上找到更多信息,但实际上只有在您实际访问文件内容时才会发生读取,例如与func
。至少,您应该使用deepseq
强制读取发生在您期望的位置。