typeclass

    0熱度

    3回答

    我試圖編寫一個函數,測試一個數字的平方根是否是整數。 我的函數如下: check :: [Int] -> [Int] check xs = filter (\n -> n == round sqrt n) xs 而且我收到錯誤消息是這些: No instance for (Integral (Int -> Int)) (maybe you haven't applied enough ar

    19熱度

    1回答

    有一個談了很多關於Applicative不需要自己的變壓器類,如下: class AppTrans t where liftA :: Applicative f => f a -> t f a 但我可以定義應用性變壓器,似乎沒有要applicatives的成分!例如sideeffectful流: data MStream f a = MStream (f (a, MStream f

    0熱度

    1回答

    我想寫一個類型類來staticly編碼有什麼我可以輸出到Printer: import java.io.PrintWriter trait Write[A] { def apply(out: PrintWriter)(x: A): Unit } object Write { def apply[A] = new Write[A] {

    3熱度

    1回答

    我正忙於在Haskell Book了「類型類」一章的練習,我解決了這個問題,如下所示: data TisAnInteger = TisAn Integer instance Eq TisAnInteger where (==) (TisAn x) (TisAn y) = x == y 所以,我可以在GHCI REPL這樣使用它: λ> TisAn 9 == TisAn

    5熱度

    2回答

    我想編程一個遊戲,並且想爲多個實體使用組件模式。 在接口/類型/多繼承的語言中,沒有問題。 我想要一些實體可更新但不可呈現,有些應該是兩者。 哈斯克爾: class Updateable a where update :: Float -> a -> a class Renderable a where render :: a -> Picture class Inpu

    0熱度

    1回答

    考慮以下類型類定義的類型的對: class Constraint a b where g :: a -> b 對於約束所有的情況下,我們可以推導出一組類型a,基本上是一個隱含的類型類,姑且稱之爲A。對於類型類別A的每個實例,存在另一個隱式類型B,其包括Constraint A b的所有可能類型b。 所以這裏是一段代碼。 {-# LANGUAGE ExistentialQuantifi

    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] =

    1熱度

    1回答

    我有一個總和類型,映射:我有一個類型類定義如下 sealed trait Mapping final case class XMapping(a:String) final case class FallbackMapping(mappings: List[Mapping]) : final case class Param(x:String) trait ParameterLoade

    0熱度

    1回答

    GHC在某些類成員的默認實現中不解析/傳播約束。這種行爲真的很奇怪,在我看來,這是一個錯誤。 有人可以幫我/向我解釋什麼是錯的? 我怎麼能告訴GHC統一從類的聲明中a和a從類方法,這樣的定義也不含糊 有什麼我不明白? 代碼: module Foo where import Data.Proxy data Stuff a = Stuff {content :: String} c

    2熱度

    1回答

    作爲Haskell編寫的大型項目的一部分,我正在研究一個小型實用程序庫來封裝我在代碼中使用的常見範例。一個功能(或兩個功能,而),我正在研究是fromLeft :: Either a b -> a和fromRight :: Either a b -> b,其是是未定義的部分功能(error是精確的)上antichiral構造: fromLeft :: Either a b -> a fromLe