问题标签 [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 回答
887 浏览

javascript - 多态内联缓存如何与可变类型一起使用?

多态内联缓存(PIC)通过按对象类型缓存实际方法来工作,以避免昂贵的查找过程(通常是哈希表查找)。

如果类型对象是可变的(即该方法可能在运行时被猴子修补成不同的东西),如何处理类型比较?

我想出的一个想法是一个“类计数器”,每次调整方法时都会增加,但是这似乎在一个猴子补丁严重的环境中会异常昂贵,因为它会杀死所有的图片那个类,即使它们的方法没有改变。

我确信必须有一个好的解决方案,因为这个问题直接适用于 JavaScript,并且 AFAIK 所有三个大型 JavaScript 虚拟机都有 PIC。

0 投票
1 回答
802 浏览

scala - 在无形中动态参数化 Poly1 函数

我有这种情况(精简到基本部分)

这不起作用,因为map需要一个稳定的标识符而m不是。所以我需要Poly1 singleton objects在结果集中有尽可能多的行。

这是此处讨论的相同问题:https ://groups.google.com/forum/#!topic/shapeless-dev/P5DXRgnzqkY ,但我找不到使这项工作的方法。

在链接的讨论中,Miles Sabin 提出了 a foldwith aPoly2而不是 a mapwith a Poly1,但我不知道如何在我的案例中使用这个建议。

0 投票
0 回答
446 浏览

scala - 无形 LeftFolder 的发散隐式扩展

我正在尝试解决这个问题,并想折叠一个HList使用Poly2函数。

这是一个独立的 MWE(您可以将其复制粘贴到具有无形 2.0 的 REPL 中以重现该问题)

我收到此错误:

错误:shapeless.ops.hlist.LeftFolder[shapeless.::[NonNullable[Int,this.T],shapeless.::[Nullable[String,this.T],shapeless.HNil]] 类型的发散隐式扩展,( List[Int], shapeless.HNil.type),toRecord.type]

从对象 LeftFolder cols.foldLeft((List(1,2), HNil))(toRecord) 中的方法 hnilLeftFolder 开始

所以显然编译器可以找到多个隐式来产生LeftFolder foldLeft需求。

我不知道如何消除歧义并明确告诉编译器我实际上想要派生 a LeftFolderwhich uses toRecord.

0 投票
3 回答
388 浏览

scala - Scala 中的多态函数是“限制性”的吗?

在 Scala MEAP v10 中的函数式编程一书中,作者提到

多态函数通常受其类型的限制,以至于它们只有一种实现!

并给出了例子

他这句话是什么意思?多态函数有限制吗?

0 投票
1 回答
878 浏览

types - 如何在 Typed Racket 中编写将多态函数作为参数的高阶函数?

例如,我如何编写一个可以map与 Typed Racket 中的多态函数一起使用的版本?我使用一个简单的id函数定义为:

当我尝试将它映射到列表上时,出现错误:

0 投票
3 回答
1436 浏览

recursion - OCaml 显式多态类型注释

我很乐意收到一些关于以下示例的有用评论:
http ://caml.inria.fr/pub/docs/manual-ocaml-400/manual021.html#toc79

7.12 显式多态类型注解

我理解这个示例函数,但是当我尝试定义类型的“类似地图”的函数时

例如:

我收到以下错误:

我不完全理解。我将不胜感激任何有用的评论。

0 投票
2 回答
821 浏览

haskell - 多态参数类型的模式匹配 - 替代方案

假设我需要不同的输出,具体取决于函数的多态参数的类型。我的初始尝试失败并出现一些神秘的错误消息:

但是,我们可以通过将所需类型包装在不同的数据构造函数中并在模式匹配中使用它们来轻松解决这个问题:

问:你知道有什么方法可以规避吗?Haskell2010、GHC 或任何扩展中是否有允许我使用第一个变体(或类似的东西)的功能?

0 投票
1 回答
122 浏览

c++ - 多态函子上的 std::result_of

我正在尝试std::result_of在仿函数上使用。为什么我会得到这些结果?

0 投票
2 回答
2566 浏览

sql - 函数参数anyelement,PostgreSQL bug?

我没有看到这个实现中的错误:

这是某种 PostgreSQL 错误还是对anyelement数据类型的未记录限制?


有趣的是:当被隔离时,CASE子句可以正常工作:

0 投票
2 回答
1534 浏览

postgresql - 检查是否有任何元素 ISNULL [ Postgresql ]

我正在尝试在 postgresql 中实现访问函数“isnull”,该函数将表达式作为参数,如果传递了 null,则该函数返回 true,如果不为 null,则返回 false。我知道 postgres 有 'IS NULL' 和 'NOT NULL' 关键字,但是当我将字符串或空值本身传递给函数时,我不断收到多态错误,因为它们都是未知类型。

此方法必须使用函数来完成。

到目前为止我所拥有的: