[英]How to call a function and return a different value in haskell? (W/o monads)
我有問題弄清楚這是否可行。 任何指針都會很棒
我不確定確切的語法,但有點像
m = 3
d = putStr "d"
f = d ; m
這樣它會調用函數d
,並返回m
的值而不是Maybe m
?
編輯:
我在尋找的更像是這樣的?
eval s = s
m = 3
f = (eval s) ; m
如果調用包含在monad中的函數(在本例中為IO),那么您還必須在IO monad中。 因此是monad的規則 - 永遠不會被打破。
m :: Int
m = 3
d :: IO ()
d = putStr "d"
f :: IO Int
f = do d -- Teehee, doodie.
return m
如果要以Debug.Trace
printf
的方式調試程序,請使用Debug.Trace
模塊。
否則請參閱上面的Clark Gaebel的回復 - 你不能從IO
函數中獲得純(非IO
)值,而putStr
只能在IO
函數中使用。
¹實際上有時你可以,但這是一個復雜的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.