۱۳ - ۲ساخت پکیج با Stack

Cabal، یا "ساختار مشترک برای ساخت برنامه‌ها و کتابخونه‌ها" (Common Architecture for Building Applications and Libraries) یه مدیریتِ پکیج برای هسکل‌ه. پکیج برنامه‌ایه که دارین می‌نویسین، و شامل همه‌ی ماژول‌ها و وابستگی‌هاش میشه، چه خودتون اونها رو نوشته باشین، چه از جای دیگه آورده باشین. به المان‌های بهم پیوسته از خودِ برنامه، سایر پکیج‌ها و کتابخونه‌ها، و هر تست و مستنداتی که مرتبط با پروژه هستن، وابستگی میگیم. کارِ Cabal اینه که همه‌ی اینها رو سازماندهی کنه و در گستره بودنِ مناسب و به‌جای همه‌ی وابستگی‌ها رو تضمین کنه.

Stack یه برنامه‌ی چندسکویی برای توسعه‌ی پروژه‌های هسکل‌ه که برای هر دو مخاطبین حرفه‌ای و تازه‌کار درست شده. با Stack میشه پروژه‌هایی که متشکل از یک پکیج یا بیشتر هستن رو مدیریت کرد؛ در حالی که Cabal بیشتر برای توصیف یک پکیج ِ مجرد از طریق یه فایلِ Cabal (با پسوندِ ‏‎.cabal‎‏) به کار میره.

Stack بر مبنای Cabal درست شده و با فایل‌های ‏‎.cabal‎‏ کار می‌کنه. اما Stack این امکان رو داره که فقط یک بار کتابخونه‌ها (که بعضی‌هاشون هم حجم بالایی دارن) رو بِسازه و در پروژه‌ها ازشون استفاده کنه. از طرف دیگه، Stack به اسنپ‌شات‌های با LTS (پشتیبانی طولانی مدت) ِ پکیج‌های هسکل از Stackage اتکا می‌کنه. برخلافِ پکیج‌های Hackage که ممکنه وابستگی‌های متنافض داشته باشن، چنین چیزی کنارِ هم کار کردنِ پکیج‌ها رو تضمین می‌کنه.