【问题标题】:Is there a way to partially apply getLine?有没有办法部分应用getLine?
【发布时间】:2015-02-14 14:08:48
【问题描述】:

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

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

??? 应该是用户输入的用于命名输出文件的行,但我不知道为??? 插入什么。我尝试插入 =&lt;&lt; getLine 和类似的 sn-ps,但对我没有任何作用。

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

【问题讨论】:

  • writeFile 有两个参数,一个路径和一个字符串。我们从getLine得到路径,但是要写什么字符串呢?
  • @AndrásKovács 该字符串是computeSomething返回的内容。
  • 那么,getLine &gt;&gt;= flip writeFile computeSomething ?
  • @Zeta facepalm 好的,谢谢。这表明我必须休息一下;)你想回答还是我应该删除这个问题?

标签: haskell partial-application


【解决方案1】:

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

getLine >>= flip writeFile computeSomething

如果您想对函数进行 eta-reduce,工具 pointfree 会很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2015-12-27
    • 2012-06-05
    相关资源
    最近更新 更多