constraint-kinds

    12熱度

    3回答

    顯然有點心不在焉,我寫了something like如下: {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeFamilies #-} class Foo f where type Bar f :: * retbar :: Bar f -> IO f type Baz f = (Foo f, Eq f)

    20熱度

    1回答

    我得到一個錯誤,Constraint不在範圍內,當我嘗試寫一個簡單的例子, {-# LANGUAGE UndecidableInstances, MultiParamTypeClasses, KindSignatures, Rank2Types, ConstraintKinds, FlexibleInstances,

    5熱度

    1回答

    我幾乎沒有成功地圍繞ad包中涉及的基本管道類型進行操作。例如,下面的工作完美: import Numeric.AD ex :: Num a => [a] -> a ex [x, y] = x + 2*y > grad ex [1.0, 1.0] [1.0, 2.0] 其中grad的類型是: grad :: (Num a, Traversable f) => (f

    6熱度

    1回答

    我可以寫: {-# LANGUAGE RankNTypes #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ConstraintKinds #-} f :: Integral a => (forall b. Num b => b) -> a f = id

    5熱度

    1回答

    我正在研究一個包含monoid的applicative函數來「查看」執行。然而,有時候我根本不關心這個部分,所以幺半羣的選擇是不相關的,因爲它永遠不會被消耗。我已經簡化我有什麼到: {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-}

    29熱度

    1回答

    我只想 class Trivial t instance Trivial t 當然這是在Haskell 98沒用的,因爲你可以省略約束;但與ConstraintKinds我們可以有明確要求種類* -> Constraint的參數。理想情況下,我想將其定義爲「匿名類型級別函數」\type a ->(),但這顯然不可行。 我應該怎麼做,用的東西預定義或只是定義本地該類權,我需要它(因爲沒有人需要

    6熱度

    1回答

    我想在分數類型中實現多態的動態編程算法;這裏是一個簡化版本的1D無邊界條件: {-# LANGUAGE ConstraintKinds, FlexibleContexts, RankNTypes, ScopedTypeVariables #-} import Control.Monad import Control.Monad.ST.Strict import Data.Array.ST

    5熱度

    1回答

    我一直在玩一些GHC擴展定義一個函數參數的函數,可以做到以下幾點: let a = A :: A -- Show A b = B :: B -- Show B in myFunc show a b -- This should return (String, String) myFunc應在show簽名完全多態的,所以它可以接受a和b,滿足Show的不同類型。 這

    2熱度

    1回答

    我想使用自定義的限制,以幫助遏制組合爆炸: {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} class DifferentTypes a b type DifferentTypes3 a b c = (DifferentTypes a b, DifferentTypes b c, Differe

    6熱度

    1回答

    當我有像在Haskell以下數據類型: data A ctx = A (forall a. ctx a => a -> a) 然後,我可以把那類型的給定類的工作價值這一數據類型的功能: > A (+3) :: A Num A (+3) :: A Num :: A Num 但是,是否可以將具有多個約束的函數放入此數據類型?我試過這個: > :t ((+ 3) . succ) ((+ 3)