Haskell'in cebirsel veri türleri
Tam Haskell'ın kavramları anlamaya çalışıyorum.
C cebirsel veri türleri genel türler benzer, örneğin,# ve Java? Ve nasıl farklılar? Onlar hakkında çok cebirsel nedir?
Evrensel cebir ve yüzük ve alanları biliyorum, ama ben sadece Haskell bu tür işler nasıl belirsiz bir fikir.
CEVAP
Haskellcebirsel veri türleriböyle beri adında bir karşılıkilk Cebirkategori teori, bize Bazı Kanun vererek, bazı işlemler ve bazı işlemek için simgeler. Hatta düzenli veri yapıları tanımlamak için cebirsel gösterimi kullanabiliriz:
Either
vs.) temsil eder.•
ürün türleri (örneğin yapılar ya da dizilerini temsil eder- Singleton türü (örneğin
data X a = X a
X
- Birim türü için
1
()
- ve
μ
en azından sabit noktası (özyinelemeli türleri gibi), genellikle örtülü.
bazı ek gösterim: ile
X•X
X²
Aslında, belki de aşağıdaki Brent Yorgey) bir Haskell veri türü için düzenli olarak bunu ifade edebilir bakımından 1
, X
,
, •
, ve en az bir sabit nokta.
Bu yazımda kısaca çok düzenli veri yapıları tanımlayabiliriz:
Birimler:
data () = ()
1
Seçenekler:
data Maybe a = Nothing | Just a
1 X
Listeler:
data [a] = [] | a : [a]
L = 1 X•L
İkili ağaçlar:
data BTree a = Empty | Node a (BTree a) (BTree a)
B = 1 X•B²
Diğer işlemler tutun (Brent Yorgey kağıt, başvuruları listelenen alınan):
Genişleme: düzeltme noktayı gözler önüne serilen listeleri hakkında düşünmek için yararlı olabilir. 22* *(yani, listeler ya boş, ya da bir eleman veya elemanlar iki ya da üç, ya da ...)
Kompozisyon
◦
belirli türleriF
G
kompozisyonF ◦ G
bir tür olan yapılar “F-yapılar yapılmış G-yapıları” (örneğinR = X • (L ◦ R)
nereyeL
listeler, bir gül ağacı.Bir veri türü D (D') bir tek D-yapıların türü verilen“, yani ayırt edici bir yerde herhangi bir veri içeren.” deliğin türev türev Bu inanılmaz matematik türev kuralları ile aynıdır tatmin:
1′ = 0
X′ = 1
(F G)′ = F' G′
(F • G)′ = F • G′ F′ • G
(F ◦ G)′ = (F′ ◦ G) • G′
Referanslar:
- Species and Functors and Types, Aman!, Brent A. Yorgey, Haskell’30, 2010, Baltimore, Maryland 10 Eylül, ABD
- Clowns to the left of me, jokers to the right (Dissecting Data Structures) Connor McBride 2008 alarmları tarafından
Haskell'in cebirsel veri türleri...
Cebirsel veri türleri Cebir taciz - ne...
Fark ve sütun veri türleri arasında BY...
Haskell Tür vs Veri Kurucu...
Nasıl C veri türleri “doğrudan en bilg...