gadt

    0熱度

    1回答

    首先,我想道歉,如果我重複這一點,但我到處搜索,而沒有找到我的問題的答案。 假設我有以下代碼: data TestType = Nothing | Int | Float deriving (Show) jaykay :: TestType -> [Char] jaykay Int = "This is an int" jaykay Float = "This is float!" ja

    1熱度

    1回答

    我只是在學習關於存在性量化,GADT和KindSignatures等的所有事情。爲此,我嘗試想出一些小程序,這些程序可以幫助我更好地理解所有內容。 現在我有了這個小片段(這實際上編譯,所以你可以嘗試一下你自己,需要矢量和MTL包),並想知道它是否是在所有可能做的我是什麼試圖完成或指導我如何使它工作 {-# LANGUAGE KindSignatures #-} {-# LANGUAGE Exis

    1熱度

    1回答

    證明我想隱藏在GADT某些類型的信息,在這裏忘掉了key型 data Query where Query :: Ord key => Map.Map key String -> Query one :: Ord key => key -> Query one k = let m = Map.insert k "hello" Map.empty in Query

    6熱度

    1回答

    這個標題確實不是很具描述性,但我不知道如何用簡短的標題來描述這個。我會很感激任何建議! 我將要提出我的問題:) 的一個非常簡化的版本,所以我有一個類型類 class Known f a where known :: f a 這被認爲是能夠產生一個給定的規範建設鍵入某個索引,對於使用GADT和其他東西很有用。我給出this的簡化版本以及相關部分。 所以這是很明顯的Proxy一個實例:

    5熱度

    1回答

    UNPACK支持正常的數據類型,如在以下內容: data T = T {-# UNPACK #-} ! Int 但有使用UNPACK附註與GADT的方法嗎?

    2熱度

    1回答

    斯卡拉11.2是給我這個錯誤: error: type mismatch; found : Seq[Some[V]] required: Seq[Option[?V8]] where type ?V8 <: V (this is a GADT skolem) val output = f(ivs.map(iv => Some(iv.get._1))) ^

    1熱度

    2回答

    我們如何在GADT上進行模式匹配?在這種情況下,我遇到了Bigarray的GADT問題。更具體地說,該代碼 let print_layout v = match Bigarray.Genarray.layout v with | Bigarray.C_layout -> Printf.printf "C layout\n" | Bigarray.Fortran_layout -

    1熱度

    1回答

    在ocaml manual§7.20的GADT的基本示例中,「type a」的含義是什麼。 ? 爲什麼宣稱「eval:一個術語 - > a」還不夠? type _ term = | Int : int -> int term | Add : (int -> int -> int) term | App : ('b -> 'a) term * 'b term

    7熱度

    1回答

    我偶然發現了以下小問題。我使用哈斯克爾記錄語法,連同GADTs: {-# LANGUAGE GADTs #-} data Test a where Test :: {someString :: String, someData :: a} -> Test a 現在我想用不同類型someData創建一個新的Test值,但someString(相同的值來證明記錄更新語法的用法): t

    4熱度

    3回答

    我有一個數據類型,其(單)構造包含一個存在性量化類型變量: data LogEvent = forall a . ToJSON a => LogEvent { logTimestamp :: Date , logEventCategory :: Category , logEventLevel :: LogLevel , log