typeclass

    1热度

    1回答

    我要让以下类型推断出来: class Lit a instance Lit Int instance Lit Float class App a b instance App Float b f :: (Lit a, App a b) => a -> b -- a should be Float 我知道这个样品无法推断a到Float因为类型的类可以不是封闭的,至少。 我该怎么做才

    5热度

    1回答

    一个类型类从编程斯卡拉书所采取的示例: case class Address(street: String, city: String) case class Person(name: String, address: Address) trait ToJSON { def toJSON(level: Int = 0): String val INDENTATION =

    7热度

    2回答

    我从列表中知道的大多数方法实际上是一些众所周知的类型类的特例。的方法的一些实例和相关类型的类: map :: (a -> b) -> [a] -> [b]和Functor foldr :: (a -> b -> b) -> b -> [a] -> b和Foldable forM :: Monad m => [a] -> (a -> m b) -> m [b]和Traversable concat

    1热度

    2回答

    从ghci的: Prelude> :i Num class Num a where (+) :: a -> a -> a (-) :: a -> a -> a (*) :: a -> a -> a negate :: a -> a abs :: a -> a

    1热度

    2回答

    我已经做了类型的类的实例时有问题,并提出列表类型的类的实例,但我得到它,我不明白 class MyType a where listsum:: a->a->Double instance (Num a)=>MyType [a] where listsum x y = sum $ zipWith (-) x y listsum返回错误单值但这是错误,我得到: Could not

    0热度

    1回答

    我通过一些在LYAH的例子读,我碰到这个代码片段来到之间使用: replicate' :: (Num i, Ord i) => i -> a -> [a] replicate' n x | n <= 0 = [] | otherwise = x:replicate' (n-1) x 这是网络版,但我也有一个这本书的副本,它有这个代替: replicate' :: Int

    0热度

    1回答

    所以我打这件事 {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, FunctionalDependencies #-} import Data.Monoid class Monoid m => Mconcat m a | a -> m where mcon :: m -> a instance Monoid m =>

    1热度

    1回答

    我刚刚学习Haskell,并希望开发我的第一个递归ADT。 我的数据类型Figure应该能够表示矩形和圆的任意组合,并且方法area应该计算图的总面积(忽略重叠)。 问题是,对于例如矩形,宽度和高度为Integer,而面积的结果应为Double(或至少一个浮点数)。 data Figure = Rect { x :: Integer, y :: Integer, width :: Integer,

    1热度

    1回答

    在下面的代码拉皮条upd是可用于Map(从我试图延伸到SortedMapQuicklens支撑萃取),但不用于SortedMap。 为什么 - 以及如何更改代码以便UpdatedMap负责SortedMap(和其他可能的Map子类)? object TImpl extends App { trait UpdatedTrait[A, K, T] { def upd(k: K,

    1热度

    2回答

    考虑: scala> trait Resource[A] { def f: String } defined trait Resource scala> case class Foo(x: String) defined class Foo 然后一个隐含的: scala> implicit def fooToResource(foo: Foo): Resource[Foo] =