بيور سكريبت
PureScript هي لغة برمجة وظيفية بحتة ذات كتابة قوية ، تُترجم إلى JavaScript [ 2 ] ، ومع واجهات خلفية بديلة، إلى C ++11 [ 3 ] و Erlang [ 4 ] و Go [ 5 ] . يمكن استخدامها لتطوير تطبيقات الويب، وتطبيقات جانب الخادم، وتطبيقات سطح المكتب باستخدام Electron أو عبر مترجمات C++11 وGo مع مكتبات مناسبة. يُشابه تركيبها النحوي إلى حد كبير تركيب Haskell . كما أنها تُقدم تعدد الأشكال الصفية والسجلات القابلة للتوسيع [ 6 ] . وعلى عكس Haskell، تُعرف لغة PureScript باستراتيجية تقييم صارمة [ 7 ]، على الرغم من وجود واجهات خلفية غير متوافقة تُطبق استراتيجية تقييم كسولة [ 8 ] . وهي برنامج مجاني ومفتوح المصدر، مُرخص بموجب رخصة BSD ثلاثية البنود .
تاريخ
تم تصميم PureScript في البداية بواسطة فيل فريمان في عام 2013. بدأ العمل عليه لأنه لم يكن راضيًا عن المحاولات الأخرى لتحويل لغة Haskell إلى JavaScript (على سبيل المثال، باستخدام Fay أو Haste أو GHCJS). [ 9 ]
ومنذ ذلك الحين، تبنّاه المجتمع ويجري تطويره على منصة GitHub . وتشمل الأدوات الأساسية الأخرى التي طوّرها المجتمع أداة البناء المخصصة Pulp ، [ 10 ] ودليل التوثيق Pursuit ، [ 11 ] ومدير الحزم Spago . [ 12 ]
سمات
تتميز لغة PureScript بالتقييم الصارم ، وهياكل البيانات المستمرة ، واستنتاج الأنواع . يشترك نظام أنواع البيانات فيها في العديد من الميزات مع لغات وظيفية مشابهة مثل Haskell : أنواع البيانات الجبرية ومطابقة الأنماط ، والأنواع ذات الرتب العليا ، وفئات الأنواع ، والتبعيات الوظيفية ، وتعدد الأشكال عالي الرتبة . يدعم نظام أنواعها تعدد أشكال الصفوف والسجلات القابلة للتوسيع، [ 13 ] ولكنه لا يدعم بعض الميزات المتقدمة في Haskell مثل نوع البيانات الجبرية المعمم (GADT) وعائلة الأنواع .
تسعى مُترجمات PureScript إلى إنتاج شفرة قابلة للقراءة، كلما أمكن ذلك. ومن خلال واجهة وظائف خارجية بسيطة (FFI)، تسمح أيضًا بإعادة استخدام الشفرة المصدرية الموجودة في JavaScript، [ 14 ] وC++11، [ 15 ] [ 16 ] وGo، [ 17 ] عادةً كتمثيل وسيط .
يدعم PureScript التجميع التزايدي ، كما يدعم توزيع المترجم إلى JavaScript إنشاء إضافات لمحرر شفرة المصدر من أجل التطوير التكراري. [ 18 ] تتوفر إضافات المحرر للعديد من محررات النصوص الشائعة، بما في ذلك Vim و Emacs و Sublime Text و Atom و Visual Studio Code .
يدعم PureScript تطوير البرامج الموجه بالأنواع من خلال ميزة "الثغرات المكتوبة " [ 19 ] ، حيث يمكن إنشاء برنامج مع وجود تعابير فرعية مفقودة. سيحاول مترجم JavaScript لاحقًا استنتاج أنواع هذه التعابير الفرعية المفقودة، وإبلاغ المستخدم بها. وقد ألهمت هذه الميزة أعمالًا مماثلة في مترجم Glasgow Haskell (GHC) [ 20 ] .
أمثلة
إليكم برنامج "مرحباً بالعالم!" بسيط مكتوب بلغة PureScript:
الوحدة الرئيسية حيث استيراد Effect.Console (log) main = log "Hello World!"هنا، يتم استنتاج نوع البرنامج والتحقق منه بواسطة مترجم PureScript. قد تتضمن نسخة أكثر تفصيلاً من البرنامج نفسه تعليقات توضيحية صريحة للأنواع.
الوحدة الرئيسية حيث استيراد بريلود استيراد التأثير (التأثير) استيراد Effect.Console (log) الوحدة الرئيسية :: وحدة التأثير main = log "Hello World!"انظر أيضاً
- لغة البرمجة إلم (Elm) – لغة برمجة وظيفية
- Reason (لغة برمجة) – امتداد بناء الجملة ومجموعة أدوات لـ OCaml
- لغة برمجة الويب JS++
- تايب سكريبت – لغة برمجة ومجموعة فرعية من جافا سكريبت
مراجع
- ↑ "purescript/purescript" . GitHub . 3 يونيو 2022.
- ↑ "مترجم PureScript إلى JavaScript" . GitHub . تم الاطلاع عليه بتاريخ 22-01-2023 .
- ↑ "مترجم PureScript إلى C++11" . GitHub . تم الاطلاع عليه بتاريخ 22-01-2023 .
- ↑ purerl - الواجهة الخلفية لـ PureScript Erlang ، purerl، 2023-09-04 ، تم الاطلاع عليه في 2023-09-05
- ↑ "مترجم PureScript إلى Go" . GitHub . تم الاطلاع عليه بتاريخ 22-01-2023 .
- ↑ "PureScript" . purescript.org . تم الاطلاع عليه بتاريخ 14-03-2019 .
- ↑ "purescript/documentation" . PureScript. 19-02-2023 . تم الاطلاع عليه بتاريخ 20-02-2023 .
- ↑ واجهات خلفية بديلة ، بيور سكريبت، ١٩ فبراير ٢٠٢٣ ، تم الاطلاع عليه بتاريخ ٢٠ فبراير ٢٠٢٣
- ↑ "اقرأ PureScript من خلال الأمثلة" . Leanpub.com . تم الاطلاع عليه بتاريخ 14 مارس 2019 .
- ↑ أداة بناء لمشاريع PureScript ، مساهمات PureScript، 8 مارس 2019 ، تاريخ الاطلاع 14 مارس 2019
- ↑ "المطاردة" . pursuit.purescript.org . تم الاطلاع عليه بتاريخ 14-03-2019 .
- ↑ مدير حزم PureScript وأداة بناء مدعومة من Dhall ومجموعات الحزم: spacchetti/spago ، spacchetti، 14-03-2019 ، تم الاطلاع عليه في 14-03-2019
- ↑ "وثائق لغة PureScript والمترجم والأدوات: purescript/documentation" . PureScript. 14-03-2019 . تاريخ الاسترجاع: 14-03-2019 .
- ↑ "واجهة الوظائف الخارجية" . بيور سكريبت. 15-07-2015 . تم الاطلاع عليه بتاريخ 22-01-2023 .
- ↑ "FFI" . PureScript. 2019-07-26 . تم الاسترجاع في 2023-01-22 .
- ↑ تطبيقات تصدير خارجية بلغة C++ للمكتبة القياسية ، PureScript، 26 يوليو 2019 ، تم الاطلاع عليه في 22 يناير 2023
- ↑ "تطبيقات تصدير اللغة الأجنبية للمكتبة القياسية" . بيور سكريبت. 13 ديسمبر 2020. تم الاطلاع عليه بتاريخ 22 يناير 2023 .
- ↑ هيغمان، كريستوف (كريتزكريك) (21 أبريل 2019). "purs ide: محرر ودعم أدوات للغة برمجة PureScript" . تم الاسترجاع في 21 أبريل 2019 .
- ↑ هيغمان، كريستوف (27-10-2016). تنفيذ البحث الموجه بالنوع لـ PureScript (رسالة بكالوريوس).
- ↑ جيسورارسون، ماتياس بال (27-09-2018). "اقتراح مقاسات ثقوب مناسبة للثقوب المكتوبة (تقرير تجريبي)" . إشعارات ACM SIGPLAN . 53 (7): 179-185 . doi : 10.1145/3299711.3242760 . S2CID 218480974 .
روابط خارجية
- اللغات الوظيفية
- لغات برمجة مطابقة الأنماط
- لغات البرمجة التي تم إنشاؤها في عام 2013
- لغات البرمجة ذات الكتابة الثابتة
- برنامج 2013
- البرامج التي تستخدم ترخيص BSD
