修改函数以忽略参数的函数的标准名称

时间:2015-03-04 21:05:11

标签: functional-programming

我正在使用Python,因为它通常很容易阅读,但这不是特定于Python的问题。

采用以下Python函数strip_argument

def strip_argument(func_with_no_args):
  return lambda unused: func_with_no_args()

在使用中,我可以将无参数函数传递给strip_argument,它将返回一个接受一个从未使用的参数的函数。例如:

# some API I want to use
def set_click_event_listener(listener):
  """Args:
      listener: function which will be passed the view that was clicked.
  """
  # ...implementation...

# my code
def my_click_listener():
  # I don't care about the view, so I don't want to make that an arg.
  print "some view was clicked"

set_click_event_listener(strip_argument(my_click_listener))

函数strip_argument是否有标准名称?我对标准库中具有这种功能的任何语言感兴趣。

1 个答案:

答案 0 :(得分:2)

大多数函数式编程语言都提供const函数,这个函数总是忽略它的第一个参数并返回它的第二个参数。如果将函数传递给const,那就是你所描述的行为。

在Haskell中你可以这样使用它:

f x = x + 1
g = const f
g 2 3 == 4 --2 is ignored and 3 is incremented

我已经在python中快速搜索了这样的函数但是没有找到任何东西。似乎标准是像你一样使用lambda函数。