type-kinds

    9热度

    1回答

    我很难理解更高类型与更高等级类型。种类非常简单(感谢Haskell的文献),我曾经认为秩序在讨论类型时就像善良,但显然不是!我读了维基百科文章无济于事。那么有人可以解释什么是排名?高级排名是什么意思?更高级别的多态性?这是怎么来的种类(如果有的话)?比较斯卡拉和哈斯克尔也会很棒。

    12热度

    1回答

    我正在使用Data.Typeable,特别是我希望能够生成正确类型的特定种类(如*)。我快到的问题是,TypeRep允许我们做如下(以GHC与7.8版本的工作): let maybeType = typeRep (Proxy :: Proxy Maybe) let maybeCon = fst (splitTyConApp maybeType) let badType = mkTyConApp

    6热度

    2回答

    所以comonad.com有一系列与applicatives一起工作的有趣文章,我一直在努力把我能够带到scala(为了好玩和学习)。于是,Haskell的定义FixF - newtype FixF f a = FixF (f (FixF f) a) 上写着,” FixF是一种((* -> *) -> * -> *) -> * -> *)这需要的固定点。‘二阶函子’(即发送一个仿函数到另一个函

    4热度

    1回答

    Hello。我正在与依赖于Haskell现代特征的象牙图书馆玩耍。其中,它定义了接受所有类型的类型IvoryType和接受特殊类型Area的IvoryArea。定义如下: {-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Ex

    5热度

    1回答

    符合遇到问题,类型为“种”: trait Sys[ S <: Sys[S]] trait Expr[S <: Sys[S], A] trait Attr[S <: Sys[S], A[_]] def test[ S <: Sys[S]]: Attr[S, ({type l[x<:Sys[x]]=Expr[x,Int]})#l] = ??? 这种失败 error: kinds of the

    3热度

    1回答

    我不明白为什么这个工程: module Records where type Element e = { element :: String, label :: String | e } type Sel = (value :: Number, values :: [Number]) type Select = Element Sel 虽然这说Cannot unify # * wit

    4热度

    1回答

    说我们有定义为 data A a = A' a deriving Show 数据类型我们有 A :: * -> * 然后我们就可以使Functor一个实例使用的“FMAP般”的功能: instance Functor A where fmap f (A' x) = A' (f x) 这使我们能够A类型的值,并使用fmap到App LY到包裹值的函数现在 Prelude> let x =

    5热度

    1回答

    假设我有一个多态类型,其中一个参数是更高类型的变量(* -> *)。 data Tricky m = Tricky { numbers :: m Int, genesis :: m String } 是否有一种通用的方式为这些类型派生实例而不使用神秘和不安全的语言扩展? 我试图使StandaloneDeriving,这样我可以指定上下文: deriving instance Show (m I

    3热度

    1回答

    说我有这样的: data Animal = Dog | Cat :t Dog Dog :: Animal 很公平。 :k Dog <interactive>:1:1: Not in scope: type constructor or class ‘Dog’ A data constructor of that name is in scope; did you m

    2热度

    1回答

    我明白以下几种: String :: * [] :: * -> * (->) :: * -> * -> * (,) :: * -> * -> * 但什么是这种意思,可能它代表什么类型? ? :: (* -> *) -> *