我想知道以下内容在Scala中是否可行:
给定R^n
中的某个向量x = (x_1, x_2, ..., x_n)
和将R^n
Map到R
的函数f
,我想在Scala中复制这个概念。(即,当应用单个值x_i
时,返回仅针对其输入域的子集定义的函数)。例如,当n = 2时,定义f(x, y) = sin(x + y)
,然后平凡地定义f(2, y) = sin(2 + y)
。
然而,维度(n〉0)可以随情况而变化,并且甚至可以在输入中提供。
n = 2的部分应用为:
def leftPartialFunction(f: (Double, Double) => Double)(x: Double): Double => Double = f(x, _)
但是如何将其推广到任意的n,例如,如何在位置i
上应用函数,我假设类似这样的情况不会起作用:
def partialFunction(f: IndexedSeq[Double] => Double)(xi: Double): IndexedSeq[Double] => Double = .... // cannot work well with indexed seq as they are not "disjoint"
1条答案
按热度按时间bgtovc5b1#
尝试以下
partialFunction
实现:测试:
您也可以写入
partialFunction(Nat(1))(f)(true)
而不是partialFunction(_1)(f)(true)
。