如何调用函数并在haskell中返回不同的值?(没有单子)

sam*_*ing 2 haskell functional-programming

我有问题弄清楚这是否可行.任何指针都会很棒

我不确定确切的语法,但有点像

m = 3
d = putStr "d"
f = d ; m
Run Code Online (Sandbox Code Playgroud)

这样它会调用函数d,并返回值m而不是Maybe m

编辑:

我在寻找的更像是这样的?

eval s = s
m = 3
f = (eval s) ; m
Run Code Online (Sandbox Code Playgroud)

Cla*_*bel 6

如果您调用包含在monad中的函数(在本例中为IO),那么您还必须在IO monad中.因此是monad的规则 - 永远不会被打破.

m :: Int
m = 3

d :: IO ()
d = putStr "d"

f :: IO Int
f = do d -- Teehee, doodie.
       return m
Run Code Online (Sandbox Code Playgroud)