19得票1回答
Sample of `forSome { val `?

Scala语言规范规定了存在类型的语法,具体可以参考这里。 Type ::= InfixType ExistentialClauses ExistentialClauses ::= ‘forSome’ ‘{’ ExistentialDcl ...

19得票1回答
Haskell中的存在量化详解

我对类型上的存在量词以及它可以使用的领域有一个大致的理解。然而,从我的经验来看,为了有效地使用这个概念,需要了解许多需要注意的细节。 问题:是否有任何好的资源来解释GHC中如何实现存在量词?也就是说: 存在类型的一致性如何工作 - 什么可以一致,什么不行? 对类型进行后续操作的顺序是什么...

19得票2回答
如何使用高阶(阶-N)类型多态表达存在类型?

我们习惯于为多态函数使用普遍量化的类型。普遍量化的类型比存在量化的类型使用更频繁。如何使用普遍类型量化器来表示存在性量化的类型?

18得票2回答
有没有一种方法在GHC Haskell中定义一个存在量化的newtype?

在Haskell的(GHC)中是否有可能定义一个存在量化的新类型?我知道如果涉及到类型类,那么在字典传递实现中是无法做到的,但对于我的目的来说不需要类型类。我真正想定义的是这个: newtype Key t where Key :: t a -> Key t 但 GHC 似乎不喜欢...

16得票2回答
Haskell 计数列表类型

所以,只是为了好玩,我一直在使用Peano数在Haskell中玩一个CountedList类型,并使用智能构造函数。 对我来说,类型安全的head和tail似乎非常酷。 我觉得我已经达到了自己知道如何做的极限。{-# LANGUAGE EmptyDataDecls #-} module C...

15得票1回答
OCaml中的状态单子

我正在尝试在OCaml中实现状态单子(练习)。我的实现如下: module type MONAD_BUILDER = sig type 'a t val return : 'a -> 'a t val bind : 'a t -> ('a -> 'b t) -&...

14得票3回答
Haskell中一个“真正”的通用函数

假设我有一个复合数据类型 -data M o = M (String,o) 现在,我可以定义一个适用于所有 M 的函数,无论 o 是什么。例如 -f :: M o -> M o f (M (s,o)) = M (s++"!", o) 然而,f并不像我想象中那样通用。特别地,在表达式中使用...

14得票2回答
C++中存在量词的等效表达方式是什么?

为了学习C ++,我正在编写红黑树实现。作为一个Haskell程序员,我认为有趣的是尝试在C ++类型系统中静态地强制执行红黑树的性质: 节点为红色或黑色。 根节点为黑色[...]。 所有叶子(NIL)都是黑色的。 如果一个节点是红色的,则其两个子节点都是黑色的。 从给定节点到任何后代NI...

14得票1回答
存在类型上的多态函数

假设我有一个类:class C a where reduce :: a -> Int 现在我想将它打包成一个数据类型:data Signal = forall a. (C a) => Signal [(Double, a)] 由于存在量词,我可以在Signals上调用C方法,但...

14得票4回答
C#中的存在类型是什么?

我目前在C#中遇到一个问题,我认为可以使用存在类型来解决。然而,我不确定它们是否可以在C#中创建,或者使用其他构造来模拟。 基本上,我想要像这样的一些代码: public interface MyInterface<T> { T GetSomething(); ...