问题标签 [higher-kinded-types]
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.
c++ - C++ 中的模板和高阶种类
我正在尝试编写一个函数,该函数采用两个具有相同包含类型的容器,例如两个std::vector<int>
s 或 astd::list<int>
和 a std::vector<int>
。(但不是 astd::vector<int>
和 a std::vector<double>
!)
由于我不太确定应该如何完成,所以我决定先编写一个测试程序:
-std=c++11
这段代码使用标志给了我以下 g++ 4.7 的编译时错误:
为什么编译器不能正确识别instance_wrapper
为模板?
scala - 在类型系统的上下文中,什么是“种类”?
我已经阅读了维基百科的文章并搜索了明显的地方,但我被困住了。有人可以简单地告诉我 Kind 到底是什么吗?这有什么用途 ?
Scala 示例最受赞赏
scala - 在scala中为递归类型指定泛型的正确方法
当我需要从具有完全相同类型的类结果返回时(不允许变化),我在 scala 中使用递归类型。
在将此模式与其他结构集成时,我遇到了一些问题。
提供的例子:
给出错误输出
错误描述绝对清楚。
我应该如何指定类型边界以适应要求?
更新:
我需要隐藏类型信息。我可以只使用长度为 1 的列表来隐藏它。但是应该有等价的
我试过这种形式:
但收到此错误:
我很好奇如何模拟与列表相同的行为
scala - `class A[_]` 有什么用?
符号的类型class A[_]
或def a[_](x: Any)
具有无法在正文中引用的类型参数,因此我看不出它在哪里有用以及它编译的原因。如果尝试引用此类型参数,则会引发错误:
有人能告诉我这种类型在 Scala 中是否有用例吗?确切地说,我不是指类型参数中的存在类型或更高种类的类型,仅指[_]
构成完整类型参数列表的那些小类型。
scala - Scala中更高种类/类型的益智游戏
当我遇到这个问题时,我正在尝试使用更高的种类和类型边界。我的用例是我希望能够使用 Request 的任何子类型或 Request 类型本身来参数化 GenericAction 实例。Action trait 使用默认类型的 Request 扩展 GenericAction trait(在这种情况下,只会生成 Request 的匿名实例)。
ActionBuilderBase 具有与子特征 ActionBuilder 和 ActionBuilder2 共享的实用方法。ActionBuilder 生成默认的 Action[A] 和 Request[A] 实例。
到目前为止一切都很好,但是当我尝试创建另一个扩展 ActionBuilderBase 具有 R 和 GenericAction 子类型的特征时(在这种情况下将创建 GenericAction 的匿名实例),它无法编译。我猜原因是在第一个 ActionBuilder 的情况下,请求类型已经被“填充”(因为 Action[A] 已经有一个请求类型 == Request),这与下面的示例不同。为了让这个例子起作用,我需要“填写”什么?
java - monad 的一般情况可以在 java 6 中表达吗?
monad 的一般情况可以在 Java 6 中表达吗?注意“一般情况”这个词——monad 的一般情况可能是不可表达的,尽管 monad 的许多特殊情况(即许多特定的 monad)是可以表达的。
这里的问题是(缺乏)Java 中的高级泛型;但是,我看到示例 Haskell 代码确实使用https://stackoverflow.com/a/877036/1123502(即public class Fix<F extends Fix<F>>
)之类的方法移植到了 Java。
当然,非类型安全的实现(如使用 Object 和向下转换)并不有趣。
更新:有 2 个常见的 monad 定义:join-fmap 和 bind-return。尽管它们(在数学上)是等价的,但它们可能不是等价的,因为一种定义可以用 Java 表达,而另一种则不是(但是,在我看来,不等价的可能性不大)。所以我的问题涉及这两个定义。
底线:是否有人克服了所有障碍并在 Java 6 中编写了“一般情况”单子?或者,或者,请指出一篇论文,或一篇详尽的博客文章,或彻底解释为什么不可能。
scala - 使用更高种类的类型访问上下文边界的类型构造函数参数
是否可以在上下文绑定中访问更高种类的类型构造函数参数?我希望定义一个采用更高类型的特征,并具有一个返回构造函数参数实例的方法。
这失败了,编译器错误抱怨上下文边界不能有两个类型参数,但我找不到另一种访问类型构造函数参数的方法?
scala - 铸造“空心”更高种类的类型值以避免实例化
我发现自己看了一些 Scalawags#2 的录音,然后是关于类型擦除的部分,Dick Wall 指出反射最终会咬你的脚。
所以我在想一些我经常做的事情(我也看到了 Scala Collections 的实现)。假设我有一个带有序列化程序的系统,将系统作为类型参数:
现在有许多类型可以在没有值参数A
的情况下构造序列化器,所以本质上系统类型参数是“空心的”。由于在我的示例中大量调用了序列化程序,因此我正在保存实例化:
我知道这是正确的,但当然,asInstanceOf
有难闻的气味。对这种方法有什么建议吗?让我补充两件事
- 将类型参数从 trait 的构造函数移动
Serializer
到read
方法不是一种选择(有特定的序列化程序需要参数化的值参数S
) - 向 的类型构造函数参数添加方差
Serializer
不是一种选择
scala - 值、类型、种类……作为一个无限序列?
我才刚刚开始熟悉种类的概念,所以如果我没有很好地提出我的问题,请耐心等待......
值有类型:
类型有种类:
种类有什么?
它们有同类、流派、品种或品种吗?
这个抽象序列能走多远?我们是因为词穷而停止,还是因为走得更远没有价值而停止?或者,也许是因为我们很快就达到了人类认知的极限,而无法将我们的头脑围绕在更高级别的种类上?
一个相关的问题:语言为我们提供了值构造函数(如 cons 运算符)来生成值。语言还为我们提供了类型构造函数,例如 (,) 或 [] 来创建类型。是否有任何语言公开种类构造函数来制作种类?
另一个我很好奇的极端情况:我们显然有一个没有值的类型,表示为⊥,称为“底部类型”。有没有类型没有类型:底部类型?
haskell - 这种类型有什么一般结构?
在之前破解某些东西时,我创建了以下代码:
Callback a
表示一个处理一些数据并返回一个新的回调的函数,该回调应该用于下一个通知。可以说,一个基本上可以替换自身的回调。liftCallback
只是将普通函数提升为我的类型,同时runCallback
使用IORef
a 将 a 转换Callback
为简单函数。
该类型的一般结构是:
看起来这可能与范畴论中一些著名的数学结构同构。
但它是什么?它是一个单子还是什么?一个应用函子?一个转化的单子?甚至是箭?是否有类似 Hoogle 的搜索引擎可以让我搜索这样的一般模式?