Мне нужно сделать машину Coke Vending Machine в 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
Что это значит?
Вы сказали, что вы новичок в Haskell, поэтому, возможно, вы не знаете, что 'return()' не требуется, и ';' в конце 'getChar' тоже не требуется. – Artyom
Вы, вероятно, должны давать явные сигнатуры типов для своих функций, они могут делать ошибки, подобные этому ясному. –