Tôi có kiến thức cơ bản về Haskell (vì vậy hãy tha thứ cho tôi nếu câu hỏi của tôi có vẻ tầm thường đối với người bán hàng ở đây) và gần đây đã xem xét cú pháp của Haskell. Trong Haskell 2010 report chỉ có một nơi mà từ khóa "gõ" được sử dụng:Quy tắc ngữ pháp cho mã Haskell này là gì?
topdecl ::= "type" simpletype "=" type
Và như có thể được nhìn thấy, luôn luôn có một "="
là bắt buộc. Trong một tập tin Haskell, tôi thấy đoạn mã này:
type Key m :: *
lấy từ TrieMap.hs dòng 61.
mà không tuân thủ các quy tắc. Tôi nghi ngờ đây là một phần mở rộng của GHC hoặc một cái gì đó tương tự . Ai đó có thể chỉ ra cho tôi ngữ pháp nào quy tắc đoạn mã này tuân theo? BTW, tôi không tìm thấy các quy tắc ngữ pháp cho các phần mở rộng và phải đoán nhiều trong số chúng, có tài liệu nào đó ở đâu đó không?
Cảm ơn! Tôi nghĩ từ ngữ pháp của Happy, tôi có thể tìm ra những gì đang diễn ra, nhưng những ngữ pháp LALR này rất đau đớn. Rất ngạc nhiên khi một ngôn ngữ được thiết kế bởi các học giả không có ngữ pháp BNF cho các phần mở rộng của nó! – Wickoo