2010-03-29 57 views

回答

6

如果你的目标是要编写一个quine(本文中给出的另一个Haskell示例),可以使用lambda表示法进行变量捕获。

func = (\x -> putStr x >> print x) "func = (\\x -> putStr x >> print x) " 
2

我不知道你在哪里用“没有使用>>”部分(如果这真的是使用do -notation),但你可以很容易地编写一个辅助函数,它将两个函数按顺序应用到同样输入:

tee f g s = f s >> g s 

func = tee putStr print "..." 

而且,只是避免重复字符串,letwhere一个局部变量很可能是最简单的:

let s = "..." 
in putStr s >> print s 
2

你可以做这样的:

doActions str actions = mapM_ ($ str) actions 
相关问题