[英]How can we match Haskell tuples to an Agda datatype?
我想在 Agda 中使用 Haskell 代碼,例如,類似於 function 的代碼,它返回一個整數和字符串對列表。
我看到了這個文檔: https://agda.readthedocs.io/en/v2.6.1.1/language/foreign-function-interface.html
但我不知道如何將 map Haskell 元組轉換為 Agda 類型,因為例如在像這樣的映射中
{-# COMPILE GHC APair = data ?????? #-}
我不知道如何填寫??????-s,因為我沒有元組數據類型的定義。
但是,內置配對中也未列出配對。
我應該如何進行?
The standard library does this in Foreign.Haskell.Pair
( https://agda.github.io/agda-stdlib/Foreign.Haskell.Pair.html ). 相關代碼是
record Pair (A : Set a) (B : Set b) : Set (a ⊔ b) where
constructor _,_
field fst : A
snd : B
open Pair public
{-# FOREIGN GHC type AgdaPair l1 l2 a b = (a , b) #-}
{-# COMPILE GHC Pair = data MAlonzo.Code.Foreign.Haskell.Pair.AgdaPair ((,)) #-}
考慮到 Agda 類型中的 Universe 級別有一些麻煩,這些級別不會出現在 Haskell 對中。 如果你不需要,這應該足夠了:
data Pair (A B : Set) : Set where
_,_ : A → B → Pair A B
{-# COMPILE GHC Pair = data (,) ((,)) #-}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.