小编Hen*_*ing的帖子

Haskell 中带有多个参数的部分应用程序

给定一些函数 f(x1,x2,x3,..,xN),在几个地方部分应用它通常很有用。例如,对于 N=3,我们可以定义 g(x)=f(1,x,3)。然而,Haskell 中的标准部分应用程序不是这样工作的,它只允许我们通过固定它的第一个参数来部分应用一个函数(因为所有函数实际上只接受一个参数)。有没有什么简单的方法可以做这样的事情:

g = f _ 2 _
g 1 3
Run Code Online (Sandbox Code Playgroud)

输出值f 1 2 3? 当然我们可以做一个 lambda 函数

g=(\x1 x3 -> f x1 2 x3)
Run Code Online (Sandbox Code Playgroud)

但我觉得这很不可读。例如,在 Mathematica 中,它是这样工作的,我觉得这很好:

g=f[#1,2,#2]&
g[1,3]
Run Code Online (Sandbox Code Playgroud)

与输出f[1,2,3]

编辑:也许我应该多谈谈动机。我想在点式组合中使用这种部分应用的函数,即在这样的表达式中:

h = g. f _ 2 . k
Run Code Online (Sandbox Code Playgroud)

得到h 3 = g(f(k(3),2))

haskell partial-application

6
推荐指数
1
解决办法
2296
查看次数

标签 统计

haskell ×1

partial-application ×1