existential-type

    1热度

    1回答

    如何将对象的字段/方法与类型绑定? 我试图做的事: object CRUDable { private val allCRUDables = scala.collection.mutable.Map[String, CRUDableMeta[_]]() def add(crudable: CRUDableMeta[_]) { allCRUDables += (crudable

    3热度

    2回答

    比方说,我有一个函数,它的功能列表对的列表,并映射函数中的每一对到列表中的一对,例如: myFunction [("SOME"++,["DAY","ONE"]), (show,[1,2])] == [["SOMEDAY", "SOMEONE"],["1","2"]] 是否有执行myFunction的这样的一种方式我上面提供的代码将按原样工作,不作任何修改? 我的问题是我无法弄清楚如何实现myF

    7热度

    1回答

    有时我需要返回存在量化类型的值。当我使用幻像类型(例如表示平衡树的深度)时,这种情况经常发生。 AFAIK GHC没有任何种类的exists量词。它只允许existentially quantified data types(直接或使用GADT)。 举个例子,我想有功能类似这样: 到目前为止,我有两个可能的解决方案,我将添加一个答案,我会很高兴地知道如果有人知道更好或不同的东西。

    1热度

    1回答

    我想解决以下问题 - 给定所有选择器(e^i_n)和一些布尔函数({f_1, f_2, f_n})枚举闭包中的n个参数的所有函数(在[f_1,f_2,.. f_n] )。 所以,我实现了BooleanFunctionClass和existencial BooleanFunction类型。 他们是哈斯克尔的狂妄精神吗? class BooleanFunctionClass a where

    7热度

    1回答

    我需要一个地图,可以包含任意值,只要它们的类型相同类型类。我的第一个幼稚的做法是这样的: type HMap = forall a . MyClass a => M.Map Int a ,但它似乎并没有工作:下面的代码给出了一个编译错误: testFunction :: (forall a . MyClass a => M.Map Int a) -> Int -> IO() testFunc

    1热度

    1回答

    当我碰到这个问题时,我试图在更高类型和类型边界上玩耍。我的用例是我想能够使用Request的任何子类型或Request类型本身来参数化GenericAction实例。 Action trait扩展了GenericAction trait和默认类型的Request(在这种情况下,只会生成Request的匿名实例)。 trait Request[+A] trait GenericAction[A,

    1热度

    1回答

    让测试施工简单: case class ListRef (list : List[_]) extends ref.WeakReference(list) 它提供了错误: <console>:8: error: illegal inheritance; self-type ListRef does not conform to scala.ref.WeakReference[List[_$1]

    5热度

    3回答

    原来,尽管存在非常简单的想法,但使用existential/rank-n类型的确很难。 为什么要将存在类型打包成data类型是必要的? 我有以下简单的例子: {-# LANGUAGE RankNTypes, ImpredicativeTypes, ExistentialQuantification #-} module Main where c :: Double c = 3 -- M

    5热度

    2回答

    为什么我无法在这里派生Show? {-# LANGUAGE ExistentialQuantification #-} data Obj = forall a. (Show a) => Item_Obj {get :: a, rest :: Obj} | No_Obj deriving Show xs :: Obj xs = Item_Obj 1 $ Item_Obj "foo" $ It

    1热度

    1回答

    对象的集合类型推断考虑下面的类定义: class Person[+T <: Person[T]] class Student() extends Person[Student] class Professor() extends Person[Professor] 我想与学生名单和教授: val persons = List(new Student(), new Professor())