有没有办法部分应用getLine?

Is there a way to partially apply getLine?

有没有办法将 getLine 部分应用到 writeFile 或类似的功能(用于文件命名目的)?我想做这样的事情:

main = writeFile ??? . computeSomething =<< somethingElse

??? 应该是用户输入的一行来命名输出文件,但我不知道要为 ??? 插入什么。我尝试插入 =<< getLine 和类似的片段,但对我没有任何效果。

是否可以在不以可读方式使用 do-notation 的情况下实现这一点?

您可以使用 flip 来翻转参数的顺序:

getLine >>= flip writeFile computeSomething

如果您想减少 eta 函数,工具 pointfree 很有用。