typeclass

    0热度

    1回答

    我读真实世界哈斯克尔和我碰到其中=>箭头用于像这样的例子来, class Borked a where ... instance (Borked a, Borked b) => Borked (a, b) where ... 这是如何不同 instance Borked (a, b) where ...

    0热度

    3回答

    可能有人请解释为什么这编译 Prelude> 1 :: Num a => a 这并不 Prelude> 1.0 :: Num a => a 第二个例子将与Fractional工作,但Num是Fractional超。就像它的超类Integral。

    4热度

    1回答

    在下面的代码中,我尝试导出无形状的类型实例。然而,对于更复杂的案例类(它被转换为更复杂的HList),编译器给了我一个“发散的隐式扩展”,即使它似乎没有两次解决同一种隐式类型。也许我错过了编译器的其他规则? (小提琴:https://scalafiddle.io/sf/WEpnAXN/0) import shapeless._ trait TC[T] sealed trait Trait1

    1热度

    1回答

    我有一个基本的类型类: class MyClass a where (-+) :: a -> a -> a instance MyClass Int where e1 -+ e2 = e1 + e2 * 100 myFunction :: MyClass a => a -> a -> a myFunction e1 e2 = e1 -+ e2 我明白上面是如何工作

    3热度

    2回答

    我试图解决与"Haskell Programming from First Principles"第15章中的this other question相同的练习。我已经创建了一个Semigroup实例,并且在编写练习的QuickCheck部分时遇到了麻烦。 半群实例应该满足: a <> (b <> c) == (a <> b) <> c <>哪里是半群mappend。 我想出了以下内容: imp

    0热度

    1回答

    我想使用参数化类型类。下面是我的源代码: class (CContext3D c k v) => CBuilder3D c a k v where build3D :: c -> a -> String -> HSL HLangJS HLangJS 在编译时我收到以下错误: Could not deduce (CBuilder3D c a k0 v0) from the conte

    3热度

    1回答

    一般情况下,最好是对某个函数使用最严格或最宽松的类型定义吗?每种方法的优缺点是什么?我发现当我使用严格双打重写my pearson correlation code时,我更容易写出,跟随和推理(这可能只是缺乏经验)。但是我也可以看到,如果有更广泛的类型定义会使这些功能更普遍适用。更严格的类型定义是否被视为技术债务的一种形式? 随着类型类: import Data.List mean :: Fr

    4热度

    2回答

    我想弄清楚类型类和GADTS之间的差异,特别是在使用-XMultiParamTypeClasses扩展名时。 似乎都具有类似用途: class MyClass a b where f :: a -> b -> Bool instance MyClass String String where f s1 s2 = ... instance MyClass Int Int

    1热度

    1回答

    我已经定义了一个单子变压器UlffT如下。 我正在与Halogen,但这不是Halogen -question - 我只是提供上下文。 UlffT意味着堆叠在Aff上,并在HalogenM中使用。 newtype UlffT m a = UlffT (ExceptT Error (ReaderT Env m) a) unUlffT :: forall m. UlffT m ~> ExceptT

    4热度

    1回答

    我有代码看起来像这样: /** * A divisor that operates on real numbers. */ case class RealDivisor(divisor: Long) extends Divisor[Double, Double] with Divisor[Long, Double] // ... with Divisor[