如何将第二个参数传递给带有3个参数的Haskell函数?

问题描述 投票:0回答:1

我现在正在学习Haskell,我对此感到非常好奇。 例如:

minus :: Int -> Int -> Int -> Int
minus x y = x - y - z

如果我想先将 y 而不是 x 传递给函数 [minus],该怎么办?我想要一个函数 [minus x 5 z] 我不想要这个

minusy10 x z = minus x 10 z

如果我必须定义一个新函数来实现这一点,我觉得它失去了一些“Haskell 优雅”。

haskell currying
1个回答
0
投票

你的

minus10
是一种非常惯用的做法;通常它被绑定在
where
子句中,这样就不会扰乱顶层 API。
flip minus 10
(`minus` 10)
也是常见的选择。这两个选择仅适用于填写“第二个”参数;更一般地说,为了填充第 n 个参数,lambda 可以更好地泛化,如 \x -> minus x 10 所示。
    

© www.soinside.com 2019 - 2024. All rights reserved.