۹ - ۴شکر گرامری برای لیست
هسکل برای لیست، مقداری شکر گرامری داره تا بشه چنین کُدی نوشت:
Prelude> [1, 2, 3] ++ [4]
[1,2,3,4]که بدونِ شکر گرامری اینطور میشد:
Prelude> (1 : 2 : 3 : []) ++ 4 : []
[1,2,3,4]این گرامر امکانِ ساخت لیستها از اعمالِ پیدرپیِ cons به مقادیر، بدون نیاز به نوشتن کلِ کُد رو مهیا میکنه (بدون نوشتنِ همهی : ها).
برای توصیف لیستها، معمولاً از لغات سلولهای cons و ستون استفاده میکنیم. شکر گرامری ِ لیست این زیربنا رو میپوشونه، اما اگه به نسخهی تلخ ِ بالا نگاه کنین، شاید واضحتر شه. سلول cons، همون دادهساز ِ دومِ تایپِ لیست، a : [a]، یا به کلام دیگه، نتیجهی اضافه کردنِ بازگشتی ِ مقادیر به ابتدای "لیست بیشتر" ِه. سلول cons یه فضای نظری ِه که ممکنه توسطِ مقادیر اشغال بشه.
ستون، ساختار اتصالی ِه که سلولهای cons رو در جای خودشون و کنار هم نگه میداره. همونطور که به زودی میبینیم، این ساختار، بجای ردیف کردن سلولهای cons از چپ به راست، اونها رو تودرتو میکنه. از اونجا که رفتار تابعهای مختلف با ستون و سلولهای cons، ممکنه متفاوت باشه، درکِ این زیربنا حائز اهمیته.