constraint-kinds

    12热度

    3回答

    显然有点心不在焉,我写了something like如下: {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeFamilies #-} class Foo f where type Bar f :: * retbar :: Bar f -> IO f type Baz f = (Foo f, Eq f)

    20热度

    1回答

    我得到一个错误,Constraint不在范围内,当我尝试写一个简单的例子, {-# LANGUAGE UndecidableInstances, MultiParamTypeClasses, KindSignatures, Rank2Types, ConstraintKinds, FlexibleInstances,

    5热度

    1回答

    我几乎没有成功地围绕ad包中涉及的基本管道类型进行操作。例如,下面的工作完美: import Numeric.AD ex :: Num a => [a] -> a ex [x, y] = x + 2*y > grad ex [1.0, 1.0] [1.0, 2.0] 其中grad的类型是: grad :: (Num a, Traversable f) => (f

    6热度

    1回答

    我可以写: {-# LANGUAGE RankNTypes #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ConstraintKinds #-} f :: Integral a => (forall b. Num b => b) -> a f = id

    5热度

    1回答

    我正在研究一个包含monoid的applicative函数来“查看”执行。然而,有时候我根本不关心这个部分,所以幺半群的选择是不相关的,因为它永远不会被消耗。我已经简化我有什么到: {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-}

    29热度

    1回答

    我只想 class Trivial t instance Trivial t 当然这是在Haskell 98没用的,因为你可以省略约束;但与ConstraintKinds我们可以有明确要求种类* -> Constraint的参数。理想情况下,我想将其定义为“匿名类型级别函数”\type a ->(),但这显然不可行。 我应该怎么做,用的东西预定义或只是定义本地该类权,我需要它(因为没有人需要

    6热度

    1回答

    我想在分数类型中实现多态的动态编程算法;这里是一个简化版本的1D无边界条件: {-# LANGUAGE ConstraintKinds, FlexibleContexts, RankNTypes, ScopedTypeVariables #-} import Control.Monad import Control.Monad.ST.Strict import Data.Array.ST

    5热度

    1回答

    我一直在玩一些GHC扩展定义一个函数参数的函数,可以做到以下几点: let a = A :: A -- Show A b = B :: B -- Show B in myFunc show a b -- This should return (String, String) myFunc应在show签名完全多态的,所以它可以接受a和b,满足Show的不同类型。 这

    2热度

    1回答

    我想使用自定义的限制,以帮助遏制组合爆炸: {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} class DifferentTypes a b type DifferentTypes3 a b c = (DifferentTypes a b, DifferentTypes b c, Differe

    6热度

    1回答

    当我有像在Haskell以下数据类型: data A ctx = A (forall a. ctx a => a -> a) 然后,我可以把那类型的给定类的工作价值这一数据类型的功能: > A (+3) :: A Num A (+3) :: A Num :: A Num 但是,是否可以将具有多个约束的函数放入此数据类型?我试过这个: > :t ((+ 3) . succ) ((+ 3)