typeclass

    3熱度

    1回答

    我有一些困難,找出爲什麼下面的代碼不起作用。我期望,因爲Command數據類型是ServerCommand或ClientCommand任何類型的構造函數,預計Command將能夠接受一個或另一個。我似乎對這些數據類型應該如何排隊有一個基本的誤解。 data ClientCommand = SEND | DISCONNECT | CONNECT data

    0熱度

    2回答

    這可能之前已經問過,我發現了一些舊的答案,但我覺得很難接受它們。 我試圖寫一個函數,對數和一起把它們添加: object Add { def[A](a1: A, a2: A) = a1 + a2 } ,我得到的錯誤: [error] found : A [error] required: String 現在很明顯斯卡拉可是沒有辛德米爾納類型推斷但你會期望有一些抽象類,比如Nu

    6熱度

    1回答

    循環,我現在有像下面這樣的結構: class F a where f :: ... default f :: (G a...) => ... f = (some definition in terms of g) class F a => G a where g :: ... default g :: (C a...) => ...

    3熱度

    1回答

    使用Bifunctor時,我們可以訪問first和second「地圖」功能。所以基本上這是一個Functor,允許我們以兩種不同的方式fmap。 有沒有像Monoid這樣的東西?一些概念允許我們以兩種不同的方式追加? 例如,假設一個不透明的Matrix類型。它不是列表或矢量矢量列表,我們不知道它是如何在內部構造的,但我們知道可以將行和列附加到它。 會有一些類型的類允許這樣做嗎? class X a

    0熱度

    1回答

    具體而言,我試圖用Applicative擴展Functor類特定類。 trait Functor[F[_]] { def fmap[A, B](r: F[A], f: A => B): F[B] } object Functor { implicit class FunctorOps[A, F[_]: Functor](xs: F[A]) { def fmap[

    2熱度

    1回答

    我目前正在哈斯克爾建立一個服務器,並作爲語言的新手,我想嘗試一種新方法zu Monad組合。這個想法是,我們可以編寫庫方法,如 isGetRequest :: (SupportsRequests m r) => m Bool isGetRequest = do method <- liftRequests $ requestMethod return $ meth

    1熱度

    2回答

    我 trait OptionTransaction { def data: Data } BuyOptionTransaction extends OptionTransaction SellOptionTransaction extends OptionTransaction 我使用這些有格式類型的類來創建各種交易 trait Formatter[T] { def

    0熱度

    1回答

    我想建立一個沒有任何相關性的接口,只有Scala庫 讓我們想象一下,這是我想要的東西: iface.jar ​​ 如您所見,它不包含任何導入。 讓我們去實現: iface_implementation1.jar import play.api.libs.json._ trait myPlayJsonImpl extends jsonIface[JsValue] { def tur

    4熱度

    2回答

    ,我們可以得到一個價值層面證明[Int]具有使用Dict {-# LANGUAGE ConstraintKinds, GADTs #-} data Dict (p :: Constraint) where Dict :: p => Dict p 和 proof = Dict :: Dict (Show [Int]) 有沒有辦法得到一個值水平推導一個顯示實例,那就是整個證明樹?

    2熱度

    1回答

    我是Haskell的新手,我正在嘗試編寫一個測試用例來證明Semigroup typeclass的關聯定律。 數據類型定義如下: newtype Combine a b = Combine {unCombine :: (a -> b)} 如隨後半羣的實施: instance (Semigroup b) => Semigroup (Combine a b) where (Combine