2015-02-22 41 views
5

Haskell ile ilgili temel bilgilere sahibim (eğer sorularım Haskellers için önemsiz görünüyorsa beni affedin) ve yakın zamanda Haskell'in sözdizimini araştırıyordum. Haskell 2010 report ise anahtar kelimeler "tip" kullanılır tek bir yer vardır:Bu Haskell kodunun dilbilgisi kuralı nedir?

topdecl ::= "type" simpletype "=" type 

Ve görülebileceği gibi, bir "=" gereklidir her zaman vardır.

type Key m :: * 

kurala uymayan TrieMap.hs hattı 61.

alınan: Bir Haskell dosyasında, ben bu kod parçası bakın. Bu bir GHC uzantısı veya benzer bir bir şey olduğundan şüpheleniyorum. Birisi bana bu kod parçasının hangi kod kuralına uyduğunu gösterebilir mi? BTW, uzantılar için dilbilgisi kurallarını bulamadım ve bunların çoğunu tahmin etmek zorunda kaldım, bir yerlerde belgelenmiş mi?

cevap

7

Bu, TypeFamilies uzantısının bir parçası olan associated type family declaration.

Temel olarak, sınıfın her örneğiyle ilişkili bir türü olduğunu söylemek için bir sınıf bildiriminde kullanılır.

Bir keresinde havuzda GHC's Happy grammar bulmamıza rağmen, BNF dilbilgisi uzantıları için güzel bir şekilde yerleştirilmiş herhangi bir yeri hatırlamıyorum.

+1

Teşekkürler! Sanırım Mutlu'un dilbilgisinden neler olduğunu anlayabiliyorum ama bu LALR dilbilgileri çok acı verici. Akademisyenler tarafından tasarlanan bir dilin, uzantıları için BNF dilbilgisine sahip olmaması çok şaşırtıcı! – Wickoo