typeclass

    1熱度

    2回答

    您好我正在尋找一個在Scala中類型類用法的快速示例,它可以在2.7.7和2.8環境中使用。 我見過的所有例子只能在2.8中工作,但我被告知類型類也可以在2.7.7中實現。 唯一的另一個要求是使用必須能夠在腳本中工作。 任何示例讚賞!由於

    8熱度

    1回答

    我有以下類型類該款車型類似SQL的查詢優化: class OptimizableQuery q where type Optimized q :: * optimize :: q -> Optimized q instance Query q => OptimizableQuery q where type Optimized q = q optimiz

    5熱度

    1回答

    編輯:解決。我沒有意識到在源文件中啓用語言擴展並沒有在GHCi中啓用語言擴展。該解決方案是在GHCi中的:set FlexibleContexts。 我最近發現Haskell中類和實例的類型聲明是Horn子句。所以我將算術運算從Prolog的第3章編碼到Haskell中。例如: fac(0,s(0)). fac(s(N),F) :- fac(N,X), mult(s(N),X,F). cla

    1熱度

    1回答

    我在學習Haskell,並試圖理解類型系統。 我想寫一個函數,它返回一個輸入的系列'一半或三加一'的長度。這是我嘗試在功能,使用遞歸的方法(該功能僅對集成輸入): hotpo :: (Integral a) => a->a hotpo n = hotpoHelper n 1 hotpoHelper:: (Integral a) => a->a->a hotpoHelper 1 n = n

    5熱度

    2回答

    我想要表示加權邊緣。我最終希望將OutE作爲Eq和Ord的一個實例,約束條件是etype是Eq和Ord的一個實例。假設我有以下文件temp.hs: data (Ord etype)=> OutE vtype etype = OutE {destVertex:: vtype, edgeValue::etype} applyFunBy accessor ordfun = (\x y -> (ord

    5熱度

    1回答

    我無法真正瞭解它。我們爲什麼需要它?我的意思是如果我使用相同的類型參數,我認爲這意味着它們應該是相同的類型。 我聽說它可以幫助編譯器避免無限循環。有人能告訴我更多關於這方面的細節嗎?最後,在真實世界的Haskell中,我們應該遵循什麼樣的模式和實踐來使用函數依賴嗎? [後續問題] class Extract container element where extract :: conta

    0熱度

    1回答

    我正在做的是(在我正在編寫的模塊中)導出一個在狀態monad中的特定類型上工作的函數(在下面的示例中,該類型將是Foo)。不過,我希望用戶能夠使用他們希望的任何MonadState類型的函數:State.Lazy,State.Strict,StateT等。因此,它需要在其外部狀態monad中具有多態性。 這裏是想我做的一個例子: EDITED有一個更好的問題: import Control.Mon

    2熱度

    2回答

    我是新來的Haskell和我試圖實施一門功課的計算器。我停留在一個地方,我需要在兩個值進行分工,我認爲這個問題是,他們的類型不能被推斷或需要聲明/轉換。我正在努力學習如何自己解決這個問題,但沿途的任何見解都會有所幫助。 下面是代碼: data Value e = OK e | Error String deriving (Eq) -- assuming we know how to type

    7熱度

    2回答

    在Scala中,我們可以使用隱含類型類有條件地添加到方法的參數化類型依賴於該類型的參數。例如,Iterator.sum: def sum[B >: A](implicit num: Numeric[B]): B = foldLeft(num.zero)(num.plus) 必須有Numeric類型類此方法的一個實例,甚至被稱爲: scala> List(1, 2, 3).sum res0:

    10熱度

    3回答

    斯卡拉有許多可用作類型類的特徵,例如包scala.math中的Ordered和Numeric。 我可以,例如,編寫使用Ordered這樣的通用方法: def f[T <% Ordered[T]](a: T, b: T) = if (a < b) a else b 我想要做類似的事情與Numeric,但這不起作用: def g[T <% Numeric[T]](a: T, b: T) = a *