Tôi thường thấy mình viết code đó trông như thế này:ăn một biểu monadic vào trừ khi hoặc khi
import System.Directory (doesFileExist)
import Control.Monad (unless)
example = do
fileExists <- doesFileExist "wombat.txt"
unless fileExists $ putStrLn "Guess I should create the file, huh?"
Có lẽ một cách tốt hơn là:
example2 =
doesFileExist "wombat.txt" >>=
(\b -> unless b $ putStrLn "Guess I should create the file, huh?")
phương pháp tốt nhất là gì đây?
Ràng buộc với 'trừ' với' (>> =) 'có thể được thực hiện với một phần,' 'something >> = (' except' someAction) '', nếu 'someAction' là ngắn. Nếu nó không phải là ngắn, tôi nghĩ rằng 'làm bool <- một cái gì đó; trừ khi bool $ làm bất cứ điều gì' là tốt hơn. –
Bạn có thể sử dụng 'mfilter', hoạt động tốt hơn nếu bạn nhúng tính toán của mình vào' Có thể '. –