برنامه نویسی عملکردی چیزی نیست که Haskell را بزرگ کند

عکس پروفایل نویسنده

@دژخیمهارپو رودر

مهندس نرم افزار در منطقه خلیج SF علاقه مند به PLT ، Linux و F / OSS

این پست اساساً به غیر هاسکلرها هدایت می شود. Haskell غالباً در برنامه های hackernews یا / r / ظاهر می شود ، اما محتوا معمولاً برخی از جنبه های برنامه نویسی عملکردی ، انواع قوی و خلوص را بشارت می دهد.

Haskell تمام آن موارد را مجسم می کند ، اما عملی بودن آن از برنامه نویسی عملکردی به شدت تایپ شده حاصل نمی شود ، بلکه از قدرت زمان اجرا ناشی می شود. زبانهای کاربردی دیگر به شدت تایپ شده مانند OCaml وجود دارد ، اما بسیاری از جنبه ها تقریباً بالغ نیستند. در اینجا برخی از ویژگیهای زمان اجرا را بررسی می کنم که به قدرت ، عملکرد و راحتی Haskell کمک زیادی می کنند.

پیاده سازی های متعدد Haskell (FLRC ، UHC ، JHC) وجود دارد ، با این حال ما به طور خاص از GHC استفاده خواهیم کرد که تا کنون بیشترین استفاده و قدرتمند است.

استثناهای ناهمزمان

تقریباً در همه زبانها موارد استثنایی توسط رشته اجرایی پرتاب می شوند. در C ++ پرتاب یک استثنا شبیه این است:

void doAction() {
    if (1 == 0) {
        throw std::runtime_error("the impossible happened");
    }
}

try {
    doAction();
} catch (const std::exception& err) {
    cout << err.what() << std::endl;
}

در Haskell * هر موضوع می تواند یک استثنا را برای موضوع دیگری ایجاد کند. بیایید یک نخ تخم ریزی کنیم و سپس فوراً آن را بکشیم …