मैं एक ही गणित सीखने के कार्यक्रम को प्रोग्रामिंग करके गणित और हास्केल सीखने की कोशिश कर रहा हूं। यादृच्छिक संख्या जनरेट कर रहा हैक्यों प्रोग्राम प्रवाह नियंत्रण यादृच्छिक रूप से निष्पादित करता है
- :
यह द्वारा शुरू होता है।
- उन नंबरों को फ़िल्टर करने के लिए एक आसान समस्या बनाने के लिए फ़िल्टर करता है।
- प्रदर्शन सवाल तो, यह मेरे प्रतिक्रिया देने के लिए दोनों मेरा उत्तर और एक अन्य समारोह के लिए सही जवाब हाथ मेरा उत्तर
- अन्त में ले (एक "बधाई" --or-- "क्षमा करें, सही जवाब खाली है । क्या मैं इसे करने की उम्मीद
- यह (मुख्य रिटर्न है जो:)
किसी कारण से, बधाई समारोह समाप्त होने के बाद, यह बेतरतीब ढंग से चयन करने के लिए है जहां वह अगले चला जाता है, लगता है या तो करो)
- या यादृच्छिक लूप पर यह तुरंत गणित परीक्षण फ़ंक्शन पर जाएगा। जब ऐसा होता है, तो ऊपर से चरण 2 नहीं होता है और मुझे प्रश्न में आंशिक संख्याएं मिलती हैं। फिर यह इस चरण को दोहरा सकता है या मुख्य पर वापस जा सकता है।
समस्या को डीबग करने का प्रयास करते समय मैं केवल रिटर्न को मारता रहता हूं और यह अलग-अलग समय पर होता है। मैंने कुछ डीबग 'प्रिंट' कथन भी जोड़े हैं।
यहां कार्यक्रम से 3 फ़ंक्शन हैं। ध्यान दें कि मुख्य कॉल 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 ""
यहां मेरा डीबग आउटपुट है। ध्यान दें कि यह केवल अंशकालिक संख्या देता है जब यह विराम समाप्त होने के तुरंत बाद मुख्य पर वापस नहीं आता है।
__ __ _ _ _ _
| \/ | __ _| |_| |__ ___ _ __ ___ __ _| |_(_) ___ ___
| |\/| |/ _` | __| '_ \/_ \ '_ ` _ \/_` | __| |/ __/ __|
| | | | (_| | |_| | | | __/ | | | | | (_| | |_| | (__\__
|_| |_|\__,_|\__|_| |_|\___|_| |_| |_|\__,_|\__|_|\___|___/
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%"
यदि यह मदद करता है, केवल बात यह है कि दूर से प्रासंगिक है कि मैं अब तक मिल गया है है: Second of several forked processes does not run in Haskell ।
आखिरकार, मैं मोनाड्स के प्रवेश स्तर पर सही हूं यदि यह आपके उत्तर को तैयार करने में मदद करता है।
मैं किसी भी मदद किसी को क्या हो रहा है, id est, क्यों यह समाप्त होता है ठहराव के बाद मुख्य के लिए सीधे लौटने नहीं कर रहा है के रूप में दे सकते हैं की सराहना करते हैं, और क्यों यह आंशिक संख्या फिल्टर छोड़ जाएगा।
धन्यवाद ^^