هل يجب أن أستخدم امتدادات Haskell GHC أم لا؟

StackOverflow https://stackoverflow.com/questions/801785

  •  03-07-2019
  •  | 
  •  

سؤال

بينما أتعلم هاسكل ، أرى أن هناك الكثير من امتدادات اللغة تستخدم في رمز الحياة الحقيقية. كمبتدئين ، هل يجب أن أتعلم استخدامها ، أم يجب أن أتجنبها بأي ثمن؟ أرى أنه يكسر التوافق مع Haskell 98 ويقصر كود إلى GHC إلى حد كبير فقط. ومع ذلك ، إذا قمت بتصفح الحزم على Hackage ، أرى أن معظمها هم فقط GHC على أي حال.

إذن ، ما هو موقف المجتمع تجاه استخدام ملحقات اللغة؟

وإذا كان استخدام الامتدادات على ما يرام ، فكيف يمكنني التمييز بين الامتدادات التي يمكنني استخدامها "بأمان" (تلك التي من المحتمل أن تصبح جزءًا من معيار هاسكل التالي) من تلك التي هي "تجريبية" في الغالب؟ على سبيل المثال ، أفترض ذلك -xdisambiguaterecordfields جميل ومفيد ، لكن هل من المحتمل أن يتم دعمه في المستقبل؟

هل كانت مفيدة؟

المحلول

هناك بعض امتدادات GHC التي هي جيدة جدًا للعيش بدونها. من بين المفضلة

  • فئات نوع multiparameter
  • متغيرات نوع النطاق
  • أنواع أعلى الرتبة
  • أنواع البيانات الجبرية المعممة (Gadts)

من هذه الفصول الأساسية هي فئات نوع متعددة الجوانب.

بعض امتدادات GHC مضاربة للغاية وتجريبية ، وقد ترغب في استخدامها بحذر. هناك طريقة جيدة لتحديد امتداد مستقر وموثوق به وهي معرفة ما إذا كان من المقرر تضمينه هاسكل برايم, ، وهو ما يأمل أن يكون خليفة هاسكل 98.

أنا الثاني من اقتراح دون ستيوارت بأنه يجب وضع علامة على كل امتداد باستخدام LANGUAGE pragma في الملف المصدر. لا تمكين الامتدادات باستخدام خيارات سطر الأوامر.

نصائح أخرى

نعم ، استخدم الامتدادات حسب الاقتضاء.

ولكن تأكد من تمكينهم عمدا - فقط عندما تقرر أنك بحاجة إليها. قم بذلك على أساس لكل وحدة عبر {-# LANGUAGE Rank2Types #-} (فمثلا).

بشكل عام ، يستخدم الناس امتدادات GHC بشكل كبير ، لأنها مفيدة للغاية و Haskell 98 قديمة جدًا. بمجرد أن يكون هناك عدد أكبر من المواعيد ، قد يبذل الأشخاص القياسيون المزيد من الجهد للالتزام به.

يمكنك العثور على حالة المقترحات للمعيار التالي هنا.

الإجابات الأخرى هنا هي الإجابات الجيدة. أود أن أضيف أن امتدادات GHC ليست مستقبلية (*) كما قد تكون ، لأن GHC يبدو أنه بعيد المدى هاسكل الأكثر شعبية ، ولا أرى هذا التغيير قريبًا.

(*) كما هو الحال في عكس "مقاومة المستقبل"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top