typeclass

    0熱度

    2回答

    我想要聲明一個AST作爲Eq的一個實例,但不想爲每個構造函數重複相同的步驟(如果所有子項都相同,則2個expr是相同的) 。所以第一個問題是,GHC「派生」是否足夠?它有什麼作用?如果沒有,是否有一個乾淨的方法來避免重複?也許泛型編程?

    3熱度

    3回答

    創建奧德情況下,給定的數據類型,如 data Foo = Bar | Baz | Qux ,我希望有多個不同的排序爲這種類型,是下列最常見/標準來實現這種方式? newtype FooPriorityA = FooPriorityA { unFooPriorityA :: Foo } instance Ord FooPriorityA where compare (FooPrio

    4熱度

    2回答

    假設我有一個特質Foo[A, B]。 我想定義一個類Bar,使用Foo進行參數化並在Bar方法中重用Foo類型參數。喜歡的東西如下所示(此片段不編譯): trait Bar[Foo[A, B]] { def doSmth[C](A => C): C } 有什麼辦法來實現類似的東西,還有剛剛在Bar聲明單一類型的參數? p.s.如果有人能夠爲所描述的東西提供正確的術語,這也會很棒。

    2熱度

    2回答

    我在與Haskell一起擺弄,但正在努力解決問題。下面的代碼: class HasHorses e where yieldInHorses :: (InHorses r) => e -> r class InHorses e data Horse = Horse String data Stable = Stable String instance InHorses Horse in

    7熱度

    1回答

    我注意到,測試套件Data.Set只有真正定義Arbitrary Set a理智的a ~ Int,但要避免GHC特殊~它採用 instance Enum a => Arbitrary (Set a) 我怎樣才能確保無需任何GHC擴展僅使用Arbitrary (Set Int)實例?在GHC-唯一代碼,我會使用任何FlexibleInstances或GADTs然後要麼 instance Arbi

    1熱度

    1回答

    當使用下面的代碼,我得到下面的toInt module Intro0 where data Zero data Succ n class Nat n where toInt :: n -> Int instance Nat Zero where toInt _ = 0 instance (Nat n) => Nat (Succ n) where toInt

    1熱度

    1回答

    我對Haskell和Rust都陌生,並且試圖將Haskell代碼轉換爲Rust以比較支持泛型的特性。然而,看來我需要在語法或Rust中的一些基本概念方面提供幫助。 我在Haskell這個代碼: class HasEmpty a where empty :: a isEmpty :: a -> Bool class Hashable a where hash ::

    4熱度

    1回答

    我正在嘗試構建一個小型DSL,它允許一些if-then-else分支具有兩種類型的組合,一種通用(If),另一種具有增加的功能(IfGE)。我的印象是,通過混合低優先級的隱含特性,我可以讓Scala爲Else操作選擇更精確的返回類型,但它失敗。這裏是建設: 編輯:這是一個最小的情況。下面更深入地介紹了上下文。爲了回答這個問題,可能只關注這個最小案例就足夠了,而要理解我在做什麼,更長的例子可能會更好

    1熱度

    1回答

    我有一些選項,當它們不是我想要的時候不想運行我的變換函數。 當前處理選項的方法是這樣的: def writeOptionalXml[T](content: Option[T], mapFn: T => Xml): Xml = content match { case Some(c) => mapFn(c) case None => NodeSeq.Empty }

    1熱度

    1回答

    data MyNum = One | Two | Three deriving (Show, Eq) 我只是構造One,Two和Three定義MyNum。 *主要>:t的一 一個:: myNum的 但是當我添加x = read("One")::MyNum我ghci的程序產生錯誤: 沒有實例(讀的myNum )由於使用'閱讀'而產生 在表達式中:read