簡體   English   中英

我們如何將 Haskell 元組匹配到 Agda 數據類型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM