ابتدای محتوای صفحه
فصل ۳۰ - پروژهی نهایی
برو به اولِ محتوای صفحه
پیشگفتار و مقدمه
پیشگفتار مترجم
پیشگفتار نویسندهها
معرفی
چرا این کتاب
قبوله، ولی من فقط یه آموزشِ موند میخواستم...
هسکل سخته؟
کلامی چند به برنامهنویسهای جدید
تبلیغِ هسکل
این کتاب چیا داره
بهترین روشها برای کار با مثالها و تمرینها
فصل ۱ - فقط لاندا لازمه
۱ - ۱ فقط لاندا لازمه
۱ - ۲ برنامهنویسی تابعی چیه؟
۱ - ۳ تابع چیه؟
۱ - ۴ ساختار جملات لاندا
۱ - ۵ سادهسازی بتا
۱ - ۶ آرگومانهای متعدد
۱ - ۷ محاسبه، همون سادهسازیه
۱ - ۸ ترکیبکنندهها
۱ - ۹ واگرایی
۱ - ۱۰ خلاصه
۱ - ۱۱ تمرینهای فصل
۱ - ۱۲ جواب تمرینها
۱ - ۱۳ تعاریف
۱ - ۱۴ منابع پیشنهادی
فصل ۲ - سلام هسکل!
۲ - ۱ سلام هسکل!
۲ - ۲ تعامل با کد هسکل
۲ - ۳ درک بیانیهها
۲ - ۴ تابعها
۲ - ۵ محاسبه
۲ - ۶ عملگرهای میانوند
۲ - ۷ تعریف مقادیر
۲ - ۸ توابع عددی در هسکل
۲ - ۹ پرانتزگذاری
۲ - ۱۰ کلیدواژههای let و where
۲ - ۱۱ تمرینهای فصل
۲ - ۱۲ تعاریف
۲ - ۱۳ منابع پیشنهادی
فصل ۳ - نوشتهها
۳ - ۱ چاپ نوشتهها
۳ - ۲ نگاهی به تایپها
۳ - ۳ چاپ نوشتههای ساده
۳ - ۴ تعاریف سطح بالا و محلی
۳ - ۵ تایپهای توابع الحاق
۳ - ۶ الحاق و گستره
۳ - ۷ چندتا تابع دیگه برای لیستها
۳ - ۸ تمرینهای فصل
۳ - ۹ تعاریف
فصل ۴ - تایپهای پایه
۴ - ۱ تایپهای پایه
۴ - ۲ تایپ چیه؟
۴ - ۳ آناتومی تعریف داده
۴ - ۴ تایپهای عددی
۴ - ۵ مقایسهی مقادیر
۴ - ۶ من رو بول بزن
۴ - ۷ توپلها
۴ - ۸ لیستها
۴ - ۹ تمرینهای فصل
۴ - ۱۰ تعاریف
۴ - ۱۱ اسمها و متغیرها
فصل ۵ - تایپها
۵ - ۱ تایپها
۵ - ۲ تایپها چه فایدهای دارن؟
۵ - ۳ تایپ سیگنچرها چطور خونده میشن
۵ - ۴ کاری کردن یا currying
۵ - ۵ چندریختی
۵ - ۶ استنتاج نوع
۵ - ۷ اعلام تایپ برای تعاریف
۵ - ۸ تمرینهای فصل
۵ - ۹ تعاریف
۵ - ۱۰ منابع پیشنهادی
فصل ۶ - تایپکلاسها
۶ - ۱ تایپکلاسها
۶ - ۲ تایپکلاس چیه؟
۶ - ۳ بازگشت به بول
۶ - ۴ تایپکلاس Eq
۶ - ۵ نوشتن نمونهی تایپکلاس
۶ - ۶ تایپکلاس Num
۶ - ۷ تایپکلاسهای با تایپ پیشفرض
۶ - ۸ تایپکلاس Ord
۶ - ۹ تایپکلاس Enum
۶ - ۱۰ تایپکلاس Show
۶ - ۱۱ تایپکلاس Read
۶ - ۱۲ نمونهها براساس تایپها خبر میشن
۶ - ۱۳ عملیات بیشتر میخوام
۶ - ۱۴ تمرینهای فصل
۶ - ۱۵ تعاریف
۶ - ۱۶ وراثت تایپکلاس، ناقص
۶ - ۱۷ منابع پیشنهادی
فصل ۷ - الگوهای تابعی بیشتر
۷ - ۱ تابعیش کن
۷ - ۲ آرگومانها و پارامترها
۷ - ۳ توابع بینام
۷ - ۴ تطبیق الگو
۷ - ۵ بیانیههای case
۷ - ۶ توابع سطح بالا
۷ - ۷ گارد یا guard
۷ - ۸ ترکیب توابع
۷ - ۹ سبک بینقطه
۷ - ۱۰ نمایش ترکیب
۷ - ۱۱ تمرینهای فصل
۷ - ۱۲ تعاریف
۷ - ۱۳ منابع پیشنهادی
فصل ۸ - توابع بازگشتی
۸ - ۱ بازگشتی یا recursion
۸ - ۲ فاکتوریل!
۸ - ۳ تهی یا bottom
۸ - ۴ اعداد فیبوناچی
۸ - ۵ تقسیم اعداد صحیح از اول
۸ - ۶ تمرینهای فصل
۸ - ۷ تعاریف
فصل ۹ - لیست
۹ - ۱ لیست
۹ - ۲ نوعدادهی لیست
۹ - ۳ تطبیق الگو روی لیستها
۹ - ۴ شکر گرامری برای لیست
۹ - ۵ استفاده از بازه برای ساخت لیست
۹ - ۶ استخراج بخشی از لیستها
۹ - ۷ لیستهای توصیفی
۹ - ۸ ستونها و محاسبهی نااکید
۹ - ۹ تغییر دادن لیست مقادیر
۹ - ۱۰ فیلتر کردن لیستها
۹ - ۱۱ زیپ کردن لیستها
۹ - ۱۲ تمرینهای فصل
۹ - ۱۳ تعاریف
۹ - ۱۴ منابع پیشنهادی
فصل ۱۰ - فولد کردن لیستها
۱۰ - ۱ فولدها
۱۰ - ۲ به جمع فولدشناسها بیاین
۱۰ - ۳ الگوهای بازگشتی
۱۰ - ۴ فولد از راست
۱۰ - ۵ فولد از چپ
۱۰ - ۶ نحوهی نوشتن توابع فولد
۱۰ - ۷ فولد کردن و محاسبه
۱۰ - ۸ خلاصه
۱۰ - ۹ اسکن
۱۰ - ۱۰ تمرینهای فصل
۱۰ - ۱۱ تعاریف
۱۰ - ۱۲ منابع پیشنهادی
فصل ۱۱ - نوعدادههای جبری
۱۱ - ۱ نوعدادههای جبری
۱۱ - ۲ دورهای از تعاریف داده
۱۱ - ۳ سازندههای دادهها و تایپها
۱۱ - ۴ نوعسازها و کایندها
۱۱ - ۵ دادهسازها و مقادیر
۱۱ - ۶ تایپ چیه و داده چیه؟
۱۱ - ۷ آریتی دادهسازها
۱۱ - ۸ چه چیزی این نوعدادهها رو جبری میکنه؟
۱۱ - ۹ نیوتایپ یا newtype
۱۱ - ۱۰ تایپهای جمع
۱۱ - ۱۱ تایپهای ضرب
۱۱ - ۱۲ حالت معمولی
۱۱ - ۱۳ ساخت و تخریب مقادیر
۱۱ - ۱۴ تایپِ تابع، معادلِ توان
۱۱ - ۱۵ نوعدادههای گونهبالا
۱۱ - ۱۶ لیستها پلیمورفیکاند
۱۱ - ۱۷ درخت باینری
۱۱ - ۱۸ تمرینهای فصل
۱۱ - ۱۹ تعاریف
فصل ۱۲ - راهی برای ارائهی مشکلات
۱۲ - ۱ راههایی برای ارائهی مشکلات
۱۲ - ۲ چگونه یاد گرفتم دست از هراس بردارم و عاشق هیچ چیز نشم
۱۲ - ۳ تایپ Either
۱۲ - ۴ گونهها، هزار ستاره در تایپها
۱۲ - ۵ تمرینهای فصل
۱۲ - ۶ تعاریف
فصل ۱۳ - ساخت پروژه
۱۳ - ۱ ماژولها
۱۳ - ۲ ساخت پکیج با Stack
۱۳ - ۳ کار با یه پروژهی پایه
۱۳ - ۴ تبدیل پروژهمون به کتابخونه
۱۳ - ۵ صادراتیهای ماژول
۱۳ - ۶ توضیحات بیشتر از واردات ماژولها
۱۳ - ۷ تعاملیسازی برنامه
۱۳ - ۸ گرامر do و IO
۱۳ - ۹ داربازی
۱۳ - ۱۰ قدم اول: وارد کردن ماژولها
۱۳ - ۱۱ قدم دوم: ایجاد یه لیست لغات
۱۳ - ۱۲ قدم سوم: ساخت یه پازل
۱۳ - ۱۳ اضافه کردن یه newtype
۱۳ - ۱۴ تمرینهای فصل
۱۳ - ۱۵ منابع پیشنهادی
فصل ۱۴ - تست کردن
۱۴ - ۱ تست کردن
۱۴ - ۲ توضیح اجمالی از تست برای تازهکارها
۱۴ - ۳ تستینگ متداول
۱۴ - ۴ به QuickCheck خوشامد بگین
۱۴ - ۵ کد مورس
۱۴ - ۶ نمونههای Arbitrary
۱۴ - ۷ تمرینهای فصل
۱۴ - ۸ تعاریف
۱۴ - ۹ منابع پیشنهادی
فصل ۱۵ - مانوید و نیمگروه
۱۵ - ۱ مانویدها و نیمگروهها
۱۵ - ۲ وقتی میگیم جبر، منظورمون چیه
۱۵ - ۳ مانوید
۱۵ - ۴ مانوید در هسکل چطور تعریف شده
۱۵ - ۵ مثالهای استفاده از مانوید
۱۵ - ۶ چرا Integer یه Monoid نداره
۱۵ - ۷ خوب که چی؟
۱۵ - ۸ قوانین
۱۵ - ۹ نمونهی متفاوت، ارائهی یکسان
۱۵ - ۱۰ استفاده از جبر با درخواست جبر
۱۵ - ۱۱ دیوانگی
۱۵ - ۱۲ زندگی بهتر با QuickCheck
۱۵ - ۱۳ نیمگروه
۱۵ - ۱۴ قدرت ممکنه ضعف باشه
۱۵ - ۱۵ تمرینهای فصل
۱۵ - ۱۶ تعاریف
۱۵ - ۱۷ منابع پیشنهادی
فصل ۱۶ - فانکتور
۱۶ - ۱ فانکتور
۱۶ - ۲ فانکتور چیه؟
۱۶ - ۳ اِفمَپ اینجا، افمپ اونجا، افمپ همهجا
۱۶ - ۴ بریم سراغ f
۱۶ - ۵ قوانین فانکتور
۱۶ - ۶ خوب، بد، زشت
۱۶ - ۷ فانکتورهای رایج
۱۶ - ۸ تغییر دادن آرگومان تایپیِ اعمالنشده
۱۶ - ۹ تست کردن نمونههای Functor با QuickCheck
۱۶ - ۱۰ تمرینها: نمونههای Func
۱۶ - ۱۱ نادیدهگرفتن حالتها
۱۶ - ۱۲ یه فانکتورِ نسبتاً حیرتآور
۱۶ - ۱۳ ساختار بیشتر، فانکتور بیشتر
۱۶ - ۱۴ فانکتورِ IO یا IO Functor
۱۶ - ۱۵ اگه بخوایم کار متفاوتی انجام بدیم چطور؟
۱۶ - ۱۶ فانکتور هر نوعداده یکتاست
۱۶ - ۱۷ تمرینهای فصل
۱۶ - ۱۸ تعاریف
۱۶ - ۱۹ منابع پیشنهادی
فصل ۱۷ - اپلیکتیو
۱۷ - ۱ اپلیکتیو
۱۷ - ۲ تعریف اپلیکتیو
۱۷ - ۳ فانکتور و اپلیکتیو
۱۷ - ۴ فانکتورهای اپلیکتیو، فانکتورهای مانویدیاند
۱۷ - ۵ اپلیکتیو در عمل
۱۷ - ۶ قوانین اپلیکتیو
۱۷ - ۷ میدونستین وقتش میرسه
۱۷ - ۸ مانویدِ ZipList
۱۷ - ۹ تمرینهای فصل
۱۷ - ۱۰ تعاریف
۱۷ - ۱۱ منابع پیشنهادی
فصل ۱۸ - موند
۱۸ - ۱ موند
۱۸ - ۲ شرمنده، ولی موند بوریتو نیست
۱۸ - ۳ گرامر do و موندها
۱۸ - ۴ مثالهایی از کاربرد Monad
۱۸ - ۵ قوانین موند
۱۸ - ۶ اعمال و ترکیب
۱۸ - ۷ تمرینهای فصل
۱۸ - ۸ تعاریف
۱۸ - ۹ منابع پیشنهادی
فصل ۱۹ - فولدبل
۱۹ - ۱ فولدِبِل
۱۹ - ۲ کلاسِ Foldable
۱۹ - ۳ انتقام مانویدها
۱۹ - ۴ نمونههای Foldable
۱۹ - ۵ بعضی عملیات پایهای
۱۹ - ۶ تمرینهای فصل
۱۹ - ۷ منابع پیشنهادی
فصل ۲۰ - پیمایشی
۲۰ - ۱ پیمایشی
۲۰ - ۲ تعریف تایپکلاس Traversable
۲۰ - ۳ تابع sequenceA
۲۰ - ۴ تابع traverse
۲۰ - ۵ کاربرد Traversable چیه؟
۲۰ - ۶ بازبینی مورس کد
۲۰ - ۷ سبک کردنِ کدِ سنگین
۲۰ - ۸ همههای کارها رو انجام بده
۲۰ - ۹ نمونههای Traversable
۲۰ - ۱۰ قوانین Traversable
۲۰ - ۱۱ کنترل کیفیت
۲۰ - ۱۲ تمرینهای فصل
۲۰ - ۱۳ منابع پیشنهادی
فصل ۲۱ - ریدر
۲۱ - ۱ ریدِر
۲۱ - ۲ شروعی تازه
۲۱ - ۳ این شما و این Reader
۲۱ - ۴ فانکتورِ توابع
۲۱ - ۵ پس Reader کو؟
۲۱ - ۶ توابع Applicative هم دارن
۲۱ - ۷ مونَدِ توابع
۲۱ - ۸ ریدِر مونَد به تنهایی جذاب نیست
۲۱ - ۹ معمولاً ReaderT میبینین، نه Reader
۲۱ - ۱۰ تمرینهای فصل
۲۱ - ۱۱ تعاریف
۲۱ - ۱۲ منابع پیشنهادی
فصل ۲۲ - حالت
۲۲ - ۱ استِیت
۲۲ - ۲ حالت چیه؟
۲۲ - ۳ اعداد تصادفی
۲۲ - ۴ نیوتایپِ State
۲۲ - ۵ تاس
۲۲ - ۶ خودتون State بنویسین
۲۲ - ۷ استخدام برای برنامهنویسی با یه کلکِ عجیب
۲۲ - ۸ تمرینهای فصل
۲۲ - ۹ منابع پیشنهادی
فصل ۲۳ - ترکیبکنندههای پارسر
۲۳ - ۱ ترکیبکنندههای پارسر
۲۳ - ۲ کمی معرفی بیشتر
۲۳ - ۳ درکِ فرایند پارسکردن
۲۳ - ۴ پارسِ مقادیر کسری
۲۳ - ۵ اکوسیستم پارسینگ هسکل
۲۳ - ۶ اَلتِرنِتیو یا Alternative
۲۳ - ۷ پارسینگِ فایلهای پیکربندی
۲۳ - ۸ پارسرهای کاراکتر و توکن
۲۳ - ۹ پارسرهای پلیمورفیک
۲۳ - ۱۰ مارشال از یک AST به یک نوعداده
۲۳ - ۱۱ تمرینهای فصل
۲۳ - ۱۲ تعاریف
۲۳ - ۱۳ منابع پیشنهادی
فصل ۲۴ - ترکیب تایپها
۲۴ - ۱ ترکیب تایپها
۲۴ - ۲ معادل تایپی برای توابع رایج
۲۴ - ۳ دوتا فانکتور کوچولو رو درخت نشستن لیفت میکنن
۲۴ - ۴ دوپلیکِتیو (!)
۲۴ - ۵ دونَد؟
۲۴ - ۶ تمرینها: نمونههای Compose
۲۴ - ۷ مونَد ترانسفورمِر
۲۴ - ۸ ترانسفورمرِ Identity یا IdentityT
۲۴ - ۹ پیداکردن یک الگو
فصل ۲۵ - موند ترانسفورمرها
۲۵ - ۱ مونَد ترانسفورمِر
۲۵ - ۲ ترانسفورمرِ Maybe یا MaybeT
۲۵ - ۳ ترانسفورمرِ Either یا EitherT
۲۵ - ۴ ترانسفورمرِ Reader یا ReaderT
۲۵ - ۵ ترانسفورمرِ State یا StateT
۲۵ - ۶ تایپهایی که بهتره استفاده نکنین
۲۵ - ۷ بازیابی تایپ معمولی از ترانسفورمر
۲۵ - ۸ بیرونیترین ساختار، داخلیترین واژهست
۲۵ - ۹ تایپکلاسِ MonadTrans
۲۵ - ۱۰ تایپکلاسِ MonadIO، یا همون زوم-زوم
۲۵ - ۱۱ موند ترانسفورمرها در عمل
۲۵ - ۱۲ موندها جابجا نمیشن
۲۵ - ۱۳ اگه دلتون خواست ترانسفورم کنین
۲۵ - ۱۴ تمرینهای فصل
۲۵ - ۱۵ تعاریف
۲۵ - ۱۶ منابع پیشنهادی
فصل ۲۶ - نااکیدی
۲۶ - ۱ تنبلی
۲۶ - ۲ نظریهی تهیِ مشاهدهای
۲۶ - ۳ بیرون به داخل، داخل به بیرون
۲۶ - ۴ اون طرفی چه شکلی میشه؟
۲۶ - ۵ میشه هسکل رو اکید کنیم؟
۲۶ - ۶ فراخوان با اسم، فراخوان با نیاز
۲۶ - ۷ محاسبهی نااکید قابلیتهامون رو تغییر میده
۲۶ - ۸ ثانک یا thunk
۲۶ - ۹ به اشتراکگذاری خوبه
۲۶ - ۱۰ الگوهای انکارپذیر و انکارناپذیر
۲۶ - ۱۱ الگوهای بنگ
۲۶ - ۱۲ توسعههای Strict و StrictData
۲۶ - ۱۳ اضافهکردنِ اکیدی
۲۶ - ۱۴ تمرینهای فصل
۲۶ - ۱۵ منابع پیشنهادی
فصل ۲۷ - کتابخونههای پایه
۲۷ - ۱ کتابخونههای پایه و ساختارهای داده
۲۷ - ۲ سنجش با Criterion
۲۷ - ۳ پروفایلینگِ برنامهها
۲۷ - ۴ فرمهای اپلیکتیو ثابت
۲۷ - ۵ مَپ یا Map
۲۷ - ۶ سِت یا Set
۲۷ - ۷ سیکوئِنس یا Sequence
۲۷ - ۸ وِکتور یا Vector
۲۷ - ۹ تایپهای نوشتاری
۲۷ - ۱۰ تمرینهای فصل
۲۷ - ۱۱ منابع پیشنهادی
فصل ۲۸ - آی-او یا IO
۲۸ - ۱ آی-او یا IO
۲۸ - ۲ بیراهههایی که توضیحاتِ IO میرَن
۲۸ - ۳ دلیلی که این تایپ لازمه
۲۸ - ۴ اشتراکگذاری
۲۸ - ۵ آی-او اشتراکگذاری رو برای همه چیز لغو نمیکنه
۲۸ - ۶ انگار خلوص داره بیمعنی میشه
۲۸ - ۷ فانکتور، اپلیکِتیو، و مونَدِ IO
۲۸ - ۸ خب حالا چطور MVar کنیم؟
۲۸ - ۹ تمرینهای فصل
۲۸ - ۱۰ منابع پیشنهادی
فصل ۲۹ - وقتی اشکال پیش میاد
۲۹ - ۱ استثناها
۲۹ - ۲ کلاسِ Exception و متودهاش
۲۹ - ۳ این ماشین برنامهها رو میکُشه
۲۹ - ۴ آیدِر میخوای؟ try کن!
۲۹ - ۵ کمدقتیِ غیرقابل تحملِ try کردن
۲۹ - ۶ چرا throwIO بهدرد میخوره؟
۲۹ - ۷ ساختِ استثناهای خودمون
۲۹ - ۸ تعامل غیرمنتظره با تهی
۲۹ - ۹ استثناهای آسنکرون
۲۹ - ۱۰ منابع پیشنهادی
فصل ۳۰ - پروژهی نهایی
۳۰ - ۱ پروژهی نهایی
۳۰ - ۲ فینگِر-دی یا fingerd
۳۰ - ۳ بررسیِ فینگِر
۳۰ - ۴ فینگر-دیِ یه ذره مدرنتر
۳۰ - ۵ تمرینهای فصل