[英]Unresolved top-level overloading
我需要在Haskell制作可樂自動售貨機,但我遇到了一些問題。 我不太了解Haskell,所以我不知道發生了什么
main = start
return()
start = do putStr "\nSelect a coin\n1. R$0,25\n2. R$0,50\n3. R$1,00\n"
coin <- getChar;
case coin of
1 -> twentyFive
2 -> fifty
3 -> dispensed
otherwise -> do putStr "Select a valid option"
start
twentyFive = do putStr "\nSelect a coin\n1. R$0,25\n2. R$0,50\n3. R$1,00\n"
coin <- getChar;
case coin of
1 -> fifty
2 -> seventyFive
3 -> dispensed
otherwise -> do putStr "Select a valid option"
twentyFive
fifty = do putStr "\nSelect a coin\n1. R$0,25\n2. R$0,50\n3. R$1,00\n"
coin <- getChar;
case coin of
1 -> seventyFive
2 -> dispensed
3 -> dispensed
otherwise -> do putStr "Select a valid option"
fifty
seventyFive = do putStr "\nSelect a coin\n1. R$0,25\n2. R$0,50\n3. R$1,00\n"
coin <- getChar;
case coin of
1 -> dispensed
2 -> dispensed
3 -> dispensed
otherwise -> do putStr "Select a valid option"
seventyFive
dispensed = do putStr "-- Coke Dispensed --"
return()
但是我收到了這個錯誤:
Unresolved top-level overloading
*** Binding : seventyFive
*** Outstanding context : Num Char
這是什么意思?
你沒有縮進seventyFive
的主體, seventyFive
你縮進其他函數的主體一樣。
應該像這樣縮進:
seventyFive = do putStr "\nSelect a coin\n1. R$0,25\n2. R$0,50\n3. R$1,00\n"
coin <- getChar
case coin of
1 -> dispensed
2 -> dispensed
3 -> dispensed
otherwise -> do putStr "Select a valid option"
seventyFive
錯誤消息是因為Hugs認為你的函數的第一行也是最后一行。 (你的第二行沒有縮進到do
之后的第一行的那一部分。)
順便說一句,如果可以的話,可以使用GHC而不是Hugs(理想情況下,作為Haskell平台的一部分),因為Hugs已經維護了幾年。
不是錯誤,但你看起來也很奇怪
coin <- getChar;
用。。。來代替
coin <- getChar
更多錯誤:
main = start
return()
應該
main = do start
return()
或者(因為我們不必擁有main :: IO ()
,我們可以擁有main :: IO anythingWeWant
)
main = start
最后,你正在調用getChar
,它會給你一個Char
,但模式匹配就好像它給你一個數字。 您需要將數字括在單引號中(例如'1'
而不是1
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.