如何在不使用">>"的情况下将两个函数应用于同一个字符串

alt*_*211 1 monads haskell

我正在写这样的函数.

func :: IO()
func = putStr print "func = putStr print"
Run Code Online (Sandbox Code Playgroud)

我知道它是不正确的,但我的想法是我希望putStr应用到字符串然后print应用到相同的字符串,"fun = .."以便输出将是:

func = putStr print "func = putStr print"
Run Code Online (Sandbox Code Playgroud)

这与我的函数定义相同.谢谢

Dar*_*rio 6

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

func = (\x -> putStr x >> print x) "func = (\\x -> putStr x >> print x) "
Run Code Online (Sandbox Code Playgroud)