ฉันกำลังพยายามจัดการกับการกระทำของ IO ฉันสงสัยว่าทำไมสิ่งนี้ถึงใช้งานได้:
main = do
alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
พูด
parse error on input `='
ฉันกำลังพยายามจัดการกับการกระทำของ IO ฉันสงสัยว่าทำไมสิ่งนี้ถึงใช้งานได้:
main = do
alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
พูด
parse error on input `='
เพิ่มคำหลัก let
main = do
let alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
do
เป็นโครงสร้างที่ระบุสำหรับตัวดำเนินการ bind
แบบ Monadic ไม่ใช่ cosmic space
สิ่งที่คุณเขียนลงในบล็อก do
ทั้งหมดนั้นเป็นสายโซ่ของฟังก์ชัน >>=
monaidic จริงๆ ดังนั้นคุณควรใช้โครงสร้าง let
แต่คุณสามารถสร้างนามแฝงในส่วนอื่นของโปรแกรมของคุณได้
alias = getLine
main = do
name <- alias
putStrLn ("your name is: " ++ name)