gadt

    1熱度

    1回答

    我在OCaml的手動看到這個例子使用GADT與功能應用的AST的多參數(AST)功能應用: type _ term = | Int : int -> int term | Add : (int -> int -> int) term | App : ('b -> 'a) term * 'b term -> 'a term let rec eval : type a

    11熱度

    2回答

    是GADTs功能語言相當於傳統的OOP +泛型,或者有一種情況下GADT容易實施正確性約束,但使用Java或C#很難或不可能實現? 例如,這種「良好類型的解釋」哈斯克爾程序: data Expr a where N :: Int -> Expr Int Suc :: Expr Int -> Expr Int IsZero :: Expr Int -> Expr Boo

    13熱度

    1回答

    該數據類型可以有type role HCons' representational representational,允許使用coerce添加或刪除應用於元素的新類型,而不需要遍歷列表。 data HNil' = HNil' data HCons' a b = HCons' a b 然而,對於這些列表的語法是不是像你一樣的有以下GADT data HList (l::[*]) where

    -1熱度

    1回答

    我想完成類似這樣的事情,但我無法完全理解語法。 type _ s = Var : 'a -> 'a s type _ t = | AA :('a -> 'a s) -> 'c t | AB : ('a -> 'b s) -> 'c t let apply_to x = function | AA g -> g x | AB g -> g x

    13熱度

    1回答

    這裏就是我有一個問題的代碼:要在任意多的參數定義 {-# LANGUAGE GADTs, LANGUAGE DataKinds #-} -- * Universe of Terms * -- type Id = String data Term a where Var :: Id -> Term a Lam :: Id -> Type -> Term b -> Te

    1熱度

    1回答

    (使用更容易複製和粘貼評論) --Say I have the following monad: {-# LANGUAGE GADTs, FlexibleInstances #-} data Instruction b where Write :: a -> Instruction() Write2 :: (a,a) -> Instruction() Read

    9熱度

    1回答

    假設我想表示具有常數c,一元函數符號f和謂詞P的一階語言的有限模型。我可以將載體表示爲列表m,該常數作爲m的元素,函數爲有序對m元件(其可以經由一個輔助函數ap被應用)的列表,和謂詞作爲滿足它的m的元素的列表: -- Models (m, c, f, p) with element type a type Model a = ([a], a, [(a,a)], [a]) -- helper

    3熱度

    3回答

    首先,這裏是我的代碼最小例如: {-# LANGUAGE GADTs #-} -- package "url" import Network.URL (exportURL, URL(..), URLType(..)) data MyURL a where GalleryURL :: URL -> MyURL URL PictureURL :: URL -> MyURL

    5熱度

    2回答

    我正在通過a GADT walkthrough進行閱讀,並陷入其中一個練習。給定的數據結構是: {-# LANGUAGE GADTs, EmptyDataDecls, KindSignatures #-} data NotSafe data Safe data MarkedList :: * -> * -> * where Nil :: MarkedList t NotSafe

    5熱度

    1回答

    這只是測試,所以我不十分關注,但我有這些定義: type z type _ s type (_, _, _) balance = | Less : (*∀'a.*) ('a, 'a s, 'a s) balance | Same : (*∀'b.*) ('b, 'b, 'b) balance | More : (*∀'a.*) ('a s, 'a, 'a s) b