【问题标题】:"func2 (func1 arg)", "(func2 . func1) arg" or "func2 $ func1 arg"?“func2 (func1 arg)”、“(func2 . func1) arg”还是“func2 $ func1 arg”?
【发布时间】:2015-08-20 07:12:35
【问题描述】:

不知道你会选择哪个选项?

putStrLn (show randomNum)
putStrLn $ show randomNum
(putStrLn . show) randomNum

所有选项在语法上都是正确的。

  • 括号确保show首先被执行,putStrLn只得到一个参数。

  • $ 运算符采用 show 函数和 randomNum 并在 randomNum 上执行 show,因此 putStrLn 仅获得一个参数。

  • . 运算符采用putStrLn 函数、show 函数和randomNum 并首先在randomNum 上执行show,然后在结果上执行putStrLn

但是在这个例子中,什么更类似于 haskell 或更有意义?

【问题讨论】:

  • 我认为这与个人选择有关。我倾向于写f $ g x。但有了更多功能,我还写了f . g . h $ x,将$ 向右移动。如果找到f . g“有意义”,我可以使用f . g $ x。我知道我的风格不是 100% 一致的。
  • 绝对是一种风格选择。选择一个并始终如一地应用它。
  • 这对于 StackOverflow 来说不是一个非常合适的问题——所有这些问题都同样“类似 Haskell”。没有正确答案。

标签: haskell


【解决方案1】:
print randomNum

因为print = putStrLn . show,这很明显。如果你真的想使用单独的函数,组合然后应用。

putStrLn . show $ randomNum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多