Tôi đang cố gắng học toán và Haskell cùng một lúc bằng cách lập trình một chương trình học toán đơn giản.Tại sao chương trình kiểm soát dòng chảy thực hiện ngẫu nhiên
Nó bắt đầu bằng:
- Tạo số ngẫu nhiên.
- Lọc các số đó để tạo sự cố dễ dàng để làm việc.
- Hiển thị câu hỏi rồi nhận câu trả lời của tôi
- Cuối cùng, nó trả lời câu trả lời chính xác cho một chức năng khác để phản hồi cho tôi ("Xin chúc mừng" - hay-- "Xin lỗi, câu trả lời đúng là BLANK .)
Đối với một số lý do, sau khi chúc mừng chức năng kết thúc, có vẻ như để lựa chọn một cách ngẫu nhiên mà nó đi tới, một trong hai:
- nó trở về chính (đó là những gì tôi mong đợi nó làm)
- Hoặc tại các vòng ngẫu nhiên, nó sẽ đi ngay lập tức đến chức năng kiểm tra toán học. Khi điều này xảy ra, bước 2 từ trên không xảy ra và tôi bắt đầu nhận được các số thập phân trong câu hỏi. Sau đó, nó có thể lặp lại bước này hoặc quay lại chính.
Khi cố gắng gỡ lỗi sự cố, tôi chỉ tiếp tục nhấn RETURN và nó sẽ xảy ra vào các thời điểm khác nhau. Tôi cũng đã thêm một số câu lệnh 'in' gỡ lỗi.
Dưới đây là 3 chức năng từ chương trình. Lưu ý rằng các cuộc gọi chính funPercentOfNumberToAnother:
funPercentOfNumberToAnother :: IO()
funPercentOfNumberToAnother = do
(percentDec, percentStr) <- getPercent
ofNum <- getDecimal (200 :: Decimal)
let isNum = percentDec * ofNum
if uglyAnswers ([ofNum, isNum], [percentDec])
then do
putStrLn ("ofNum: " ++ show ofNum)
putStrLn ("isNum: " ++ show isNum)
putStrLn "___________________________"
funPercentOfNumberToAnother
else do
putStrLn ("ofNum: " ++ show ofNum)
putStrLn ("isNum: " ++ show isNum)
putStrLn "Percents"
-- putStrLn "\n\n"
putStrLn (show isNum ++ " is what percent of " ++ show ofNum ++ "?\n")
putStr "> "
ans <- getLine
submitStringAnswer (ans, percentStr ++ "%")
submitStringAnswer :: (String, String) -> IO()
submitStringAnswer (myAns, correctAns) = do
if myAns == correctAns
then putStrLn "Congratz!"
else do
putStrLn ("Sorry the correct answer is: " ++ show correctAns)
pause
pause :: IO()
pause = do
x <- getLine
putStrLn ""
Đây là đầu ra gỡ lỗi của tôi. Lưu ý rằng Thời gian duy nhất nó cung cấp các số phân số là sau khi nó không trở về chính ngay sau khi tạm dừng kết thúc.
__ __ _ _ _ _
| \/ | __ _| |_| |__ ___ _ __ ___ __ _| |_(_) ___ ___
| |\/| |/ _` | __| '_ \/_ \ '_ ` _ \/_` | __| |/ __/ __|
| | | | (_| | |_| | | | __/ | | | | | (_| | |_| | (__\__
|_| |_|\__,_|\__|_| |_|\___|_| |_| |_|\__,_|\__|_|\___|___/
1.) Learn Math
2.) Math Lookup
3.) Quit Excolo
1
ofNum: 35
isNum: 15.75
___________________________
ofNum: 120
isNum: 102
Percents
102 is what percent of 120?
>
Sorry the correct answer is: "85%"
15.75 is what percent of 35?
>
Sorry the correct answer is: "45%"
__ __ _ _ _ _
| \/ | __ _| |_| |__ ___ _ __ ___ __ _| |_(_) ___ ___
| |\/| |/ _` | __| '_ \/_ \ '_ ` _ \/_` | __| |/ __/ __|
| | | | (_| | |_| | | | __/ | | | | | (_| | |_| | (__\__
|_| |_|\__,_|\__|_| |_|\___|_| |_| |_|\__,_|\__|_|\___|___/
1.) Learn Math
2.) Math Lookup
3.) Quit Excolo
1
ofNum: 80
isNum: 44
Percents
44 is what percent of 80?
>
Sorry the correct answer is: "55%"
__ __ _ _ _ _
| \/ | __ _| |_| |__ ___ _ __ ___ __ _| |_(_) ___ ___
| |\/| |/ _` | __| '_ \/_ \ '_ ` _ \/_` | __| |/ __/ __|
| | | | (_| | |_| | | | __/ | | | | | (_| | |_| | (__\__
|_| |_|\__,_|\__|_| |_|\___|_| |_| |_|\__,_|\__|_|\___|___/
1.) Learn Math
2.) Math Lookup
3.) Quit Excolo
1
ofNum: 15
isNum: 2.25
___________________________
ofNum: 60
isNum: 0.6
___________________________
ofNum: 40
isNum: 30
Percents
30 is what percent of 40?
>
Sorry the correct answer is: "75%"
0.6 is what percent of 60?
>
Sorry the correct answer is: "1%"
2.25 is what percent of 15?
>
Sorry the correct answer is: "15%"
Nếu nó giúp, điều duy nhất có liên quan từ xa mà tôi đã tìm thấy cho đến thời điểm này là: Second of several forked processes does not run in Haskell .
Cuối cùng, tôi đúng ở cấp nhập cảnh của Monads nếu điều đó giúp xây dựng câu trả lời của bạn.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào có thể cho những gì đang xảy ra, id est, tại sao nó không quay trở lại chính sau khi tạm dừng kết thúc và tại sao nó bỏ qua bộ lọc số phân số.
Cảm ơn ^^