キャッシュ? https://wandbox.org/permlink/98ZKnQW0uSr5c5CV

f () = print "hoge" >> getLine >>= \x -> print "foo" >> return (\() -> x)
main = do
putStrLn "1234"
f () >>= \g -> do
let e = g ()
print e
print e