问题标签 [polymorphic-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
147 浏览

function - Haskell 中的多态类型

我遇到了这个功能

我想我会尝试自己定义多态类型以理解这个概念。

我的想法如下:

该函数有 3 个参数,所以我们有t1 -> t2 -> t3 -> T

  1. p在 if 条件中使用,因此它必须返回 a bool,因此t1 = a -> Bool

  2. f也是相同的类型,p因为它在 else 块中作为参数传递,因此t2 = a -> Bool

  3. x 在 if 条件中使用,因此它必须返回一个布尔值,因此t1 = a -> Bool

但是当我检查 ghci 中的类型时,他们给我的类型是

iter :: (t -> Bool) -> (t -> t) -> t -> t

有人可以解释一下这背后的原因。

谢谢

0 投票
2 回答
484 浏览

function - 多态类型的函数作为haskell中的参数?

我试图定义以下函数的多态类型:

我的想法如下:

  1. 的第一个参数flipf接受两个参数,所以(t1 -> t2 -> t3)

  2. , 的第二个参数由于函数内部的参数flipx具有类型。t1t1f

  3. 的第三个参数flip,由于函数内部的参数y而具有类型。t3t3f

  4. 我不知道整体回报的多态类型。

但是当我检查 ghci 中的类型时,我得到:

有人可以帮忙看看这个例子是什么吗?

谢谢

0 投票
2 回答
44 浏览

scala - 将搜索项和运算符传递给 Scala 多态函数

我有这个多态函数:

从 Scala 中的函数式编程中,我想传递运算符 < 是否等于特定值 >。我该怎么做?我目前有这个:

这里的操作符是 < == "def">。Scala 不喜欢这样,但我似乎无法找到一种方法来传递该值,运算符对。有什么东西告诉我可以在这里使用柯里化吗?

0 投票
1 回答
709 浏览

haskell - Haskell 多态函数使用 Either Left Right

我是 Haskell 的新手。我有以下类型:

我想创建一个函数,我将使用一个函数在 2EvalResult种类型上使用它,并相应地得到一个EvalResult。如果我得到 2 个值类型,我想对它们使用函数(例如 sum/sub),如果我得到 EvalError,我想返回 EvalError。

我做了什么:

错误:

0 投票
1 回答
487 浏览

scala - 在另一种方法中使用无形多边形

我正在尝试在另一种方法中使用Shapeless Poly :

这给了

关于如何使它起作用的任何建议?

0 投票
1 回答
238 浏览

postgresql - port Oracle decode() using variadic, anyarray, and anyelement

I need to port from Oracle a stored procedure that uses decode() extensively. That is, I can't use series of CASE WHEN expr THEN expr [...] ELSE as the guide suggests.

I wanted to create a variadic function, but here's the problem: in Oracle the function can accept any number of key-value pairs and the type of the key not necessarily matches the type of the value:

I tried to use anyarray:

But this only works when all the arguments are of the same type:

If the desired syntax is not possible please advise another way of passing the expr, the set of pairs, and the default value while keeping their positions same as in Oracle.

0 投票
2 回答
71 浏览

scala - 如何将泛型方法转换为泛型函数

问题

如何将定时方法转换为函数?

下面导致“错误:未找到:类型 T”

0 投票
1 回答
91 浏览

scala - 类型更高的 lambda

Dotty中给出以下内容:

我想“简化”BaseCreate这样我可以Create像这样实现:

我试过了:

但是编译器抱怨:

这对我来说没有意义。什么是正确的语法,如果有的话?

使用此代码链接到 scastie

PS:我不想再向BaseCreate. 尤其是F因为这意味着该类Domain.Create将需要final case class Create[F[_]]完全不是预期的解决方案。

0 投票
1 回答
116 浏览

scala - 为接受带有类型参数的方法的类型类定义构造函数?

我有一种情况,我所知道的解决方案都不是好的解决方案。我正在尝试定义一个类型类,如下例所示,其中它具有S必须实现另一个类型类(未显示)的抽象类型Valid[A]。感觉最简单的方法是创建一个apply构造函数,这将强制用户输入S并自动为sIsValid.

问题在于该函数changeType采用类型参数。尽管进行了一些谷歌搜索,但我还没有弄清楚如何为接受类型参数的函数编写类型注释(这可能是因为 Scala 似乎不允许带有类型参数的匿名函数)。我的方法在这里看起来是明智的吗?如果我可以为其提供类型注释,changeType那么类型类用户仍然可以将非匿名函数传递给apply构造函数,这似乎是一个最令人满意的解决方案。

感激地收到任何帮助/想法。

0 投票
5 回答
867 浏览

haskell - 我可以在 Haskell 中打印多态函数的类型,就像我将一个具体类型的实体传递给它一样吗?

这是一个具有 3 种类型的多态函数:

这里是一个非多态函数:

如果我们将前者应用于后者,我们会得到一个多态的 1 类型函数:

这意味着使用and(.)被“实例化”(我不确定这是正确的术语;作为 C++ 程序员,我会这样称呼它) ,因此应用的签名如下b === Charc === Int(.)digitToInt

我的问题是:有没有办法让这个签名打印在屏幕上,给定(.)digitToInt以及我想将前者应用于后者的“信息”?

对于有兴趣的人,这个问题早些时候作为这个问题的副本关闭