[英]Definition of List in Agda
infixr 40 _::_
data List (A : Set) : Set where
[] : List A
_::_ : A -> List A -> List A
我很難把頭纏在最后一行。 我之前學過一些Haskell,所以我對cons運算符很熟悉。
因此,您將擁有一個空列表(其類型為List A
)或使用函數::
創建類型A -> List A -> List A
的新值::
-類型A -> List A -> List A
,其中需要一個類型為A
元素以及一個類型為list的列表A
並返回一個新的列表?
這似乎是直覺,但這並不映射到我所知道的遞歸數據類型定義的概念(來自haskell),例如
data Tree a = Leaf a | Branch (Tree a) (Tree a)
問題那么這是哪種類型? 阿格達涉及哪些概念?
在Haskell和Agda中有兩種語法來定義數據類型。
簡單的一個:
data List a = Nil | a :# List a
更具表現力的一種(在Haskell中,它用於定義GADT ):
{-# LANGUAGE GADTs #-}
data List a where
Nil :: List a
(:#) :: a -> List a -> List a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.