Haskell 部分应用加 1 和加倍

Haskell partial applications to add 1 and double

我必须编写一个接受整数的程序,然后使用两个部分应用程序首先将数字递增 1,然后第二个部分应用程序将其加倍。我知道部分应用程序将采用比指定参数更少的参数,但这些部分应用程序中的每一个只需要 1 个输入。这是否意味着我没有将任何内容传递给任何一个部分应用程序?这对我来说真的 wrong/weird 。任何关于从哪里开始部分应用程序的帮助将不胜感激

你的作业几乎肯定是要求你使用部分应用其他东西来实现"increment by one"和"double" 操作。它不是要求您部分应用这些操作。

例如,在这个问题的标题中,您写了 "add 1" 来表示您的增量操作;这不就是将加法运算(需要两个运算)部分应用到单个参数(即 1)以获得仅需要单个参数的运算吗?

听起来您应该使用带两个参数的函数,然后部分应用它们以得到带一个参数的函数。要使用部分应用程序将数字递增 1,您可以这样做:

add a b = a + b
add_one = add 1

您将一个函数用于将两个数字相加并将其部分应用于一个数字,因此现在您拥有了一个将一个数字加一的函数。同样的原则也适用于加倍。

multiply a b = a * b
double = multiply 2

加倍函数只是2部分应用于乘法。要组合这些,您可以使用函数组合:

doubleIncr = multiply 2 . add 1

希望对您有所帮助!