هاسكل (لغة برمجة)

هاسكل [2][3] هي لغة برمجة مطابقة للمعايير، للأغراض العامة، وهي لغة وظيفية إلى حد كبير، دون دلالات ألفاظ ملزمة وبكتابة ثابتة وقوية.[4] وقد سُميت بـ هاسكل علي اسم عالم المنطق " هاسكل كوري ". وفي اللغة هاسكل، "تمثل الوظيفة مواطن من الدرجة الأولى" من لغة البرمجة.[5] ولكونها لغة برمجة وظيفية فإن بنية التحكم الرئيسية هي الوظيفة. وترجع أصول اللغة إلى ملاحظات هاسكل كوري وأتباعه من المفكرين، بأن " الإثبات هو برنامج؛ والمعادلة التي يثبتها هي نوع للبرنامج".[6][7][8][9]

هاسكل
 

ظهرت في 1990 
صممها سيمون بيتن جونز ،  وإريك ماير  
نظام التشغيل متعدد المنصات  
المطور سيمون بيتن جونز [1]
إريك ماير [1] 
متأثرة بـ ليسب ،  وأم أل (لغة برمجة)  
امتدادات الملفات hs،  وlhs 
موقع ويب الموقع الرسمي 

تاريخ اللغة

عقب إصدار لغة البرمجة ميريندا في عام 1985 بواسطة شركة برمجيات البحوث المحدودة (Research Software Ltd، زاد الاهتمام بلغات البرمجة الوظيفية الكسولة: بحلول عام 1987 زاد عدد لغات البرمجة الوظيفية الصرفة بشكل كبير. من بين هذه اللغات كانت ميراندا الأكثر استخداماً ولكنها لم تكن خاضعة للملكية العامة. لذلك في مؤتمر اللغات البرمجية الوظيفية وعمارة الحاسوب (FPCA 87) والذي تم عقده في بورتلاند اوريجون، تم عقد اجتماع أعرب فيه المشاركون بالإجماع على ضرورة تشكيل لجنة لتعمل على تحديد معايير مفتوحة لهذه اللغات. وكانت اللجنة تهدف إلى دمج اللغات الوظيفية الموجودة في ذلك الوقت في لغة واحدة عامة لتكون أساس للأبحاث المستقبلية في تصميمات اللغات الوظيفية.[10]

هاسكل 1.0

ظهر الإصدار الأول من هاسكل ("هاسكل 1.0") في عام 1990.[11] ونتج عن مجهودات اللجنة مجموعة من التعريفات اللغوية.

هاسكل 98

في أواخر عام 1997، توجت سلسلة هاسكل بـ هاسكل98، وكان يهدف الي تحديد إصدار ثابت، وبسيط، ومحمول ومزود بمكتبة قياسية للتدريس، وليكون قاعدة للتوسعات المستقبلية. وقد رحبت اللجنة بإنشاء الإضافات والبدائل لهاسكل 98 عن طريق إضافة ودمج الخصائص التجريبية.[10]

في فبراير من عام 1999 أعلنت النسخة القياسية من لغة هاسكل 98 في أول الأمر تحت اسم " تقرير هاسكل 98 "[10]"The Haskell 98 Report. وفي يناير من عام 2003 تم إصدار نسخة مُعدلة تحت اسم " هاسكل98 لغة ومكتبات: التقرير المُعدَل""Haskell 98 Language and Libraries: The Revised Report.[12] وواصلت لغة هاسكل تطورها بشكل سريع، وذلك مع تنفيذ المترجم غلاسكو هاسكل (GHC) الذي يعتبر القياسي حاليا.

هاسكل برايم

في مطلع عام 2006 بدأت عملية إنشاء نسخة تخلُف الإصدار "هاسكل98 الأساسي" الدارج باسم "هاسكل" وأطلق على هذه النسخة اسم ("هاسكل برايم").[13] وهي تعتبر عملية متطورة ومستمرة لتعديل تعريفات اللغة وذلك لإنتاج نسخة معدلة جديدة سنوياً. وتم الإعلان عن أول نسخة مُعدلة في نوفمبر من عام 2009 وسميت بـ "هاسكل 2010".[14]

هاسكل 2010

تضيف هاسكل 2010 الواجهة البينية الوظيفية الخارجية (FFI) إلى لغة هاسكل، مما يسمح بربطها بلغات برمجة أخرى، وتثبيت بعض القواعد اللغوية (تغييرات في القواعد الشكلية)، وحظر ما يسمى بنماذج " n-plus-k"، أي تعريفات للصيغة " fak (n+1) = (n+1) * fak n " لم تعد مسموحة. ويقدم هذا الإصدار إمكانية تمديد الجمل في اللغة والتي تسمح بتعيين مصدر لهاسكل مثل هاسكل2010 أو تتطلب امتدادات محددة للغة هاسكل. وأسماء الامتدادات المقدمة في هاسكل2010 هي:[14] DoAndIfThenElse، HierarchicalModules، EmptyDataDeclarations، FixityResolution، ForeignFunctionInterface، LineCommentSyntax، PatternGuards، RelaxDependencyAnalysis، LanguagePragma، NoNPlusKPatterns

الخصائص

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

تتمتع هاسكل بنظام كتابة ثابت وقوي يقوم على واجهة كتابة هيندلي-ميلنر. والابتكار الرئيسي للغة هاسكل في هذا النطاق هو إضافة فئات الكتابة، والتي كانت معروفة في الأساس كطريقة رئيسية لإضافة حِمل زائدة إلى اللغة،[15] ولكن وُجد لها استخدامات أخرى كثيرة فيما بعد.[16]

وتعتبر موناد مثالاً للكتابات التي لها آثار جانبية، كما تمثل كتابات موناد إطار عام يمكنه صياغة عمليات حسابية متنوعة، بما في ذلك معالجة الأخطاء، تنوع المُدخلات، التحليل اللغوي، وذاكرة عمليات البرمجيات. وتعرف كتابات موناد بأنها أنواع عادية من البيانات، بينما تقدم هاسكل بعض التبسيطات اللغوية لتسهيل استخدامها.

كما أنها لغة ذات خصائص معلنة مفتوحة[12] وتطبيقات متعددة.

ويحيط بهذه اللغة مجتمع فاعل، وأكثر من 3000 مكتبة مفتوحة المصدر وأدوات متاحة في مستودع حزمة الانترنت هاكاج Hackage.[17]

ويعتبر مترجم جلاسجو GHC هو التطبيق الرئيسي للغة هاسكل، وهو مترجم ومفسر للشفرة الأم ويعمل علي معظم المنصات. كما يتسم بأداء عالية في تنفيذ التطبيقات المتزامنة والمتوازية,[18] ويتميز كذلك بوجود نظام كتابة غني يضم الابتكارات الحديثة مثل كتابات البيانات الجبرية العامة وعائلات الكتابة Type Families.

أمثلة للأكواد

البرنامج التالي هو " هاللو ورلد " وهو مكتوب بلغة هاسكل (لاحظ أنه يمكن حذف جميع الخطوط ماعدا الخط الأخير).

module Main where

main :: IO ()
main = putStrLn "Hello, World!"

هاهو العاملي الرياضي مشروحا بستة طرق مختلفة:

-- type
factorial :: Integer -> Integer

-- using recursion
factorial 0 = 1
factorial n = n * factorial (n - 1)

-- using lists
factorial n = product [1..n]

-- using recursion but written without pattern matching
factorial n = if n> 0 then n * factorial (n-1) else 1

-- using fold
factorial n = foldl (*) 1 [1..n]

-- using only prefix notation and n+k-patterns (no longer allowed in Haskell 2010)
factorial 0 = 1
factorial (n+1) = (*) (n+1) (factorial n)

-- Point-free style
factorial = foldr (*) 1. enumFromTo 1

وهذا تطبيق فعال لأرقام فيبوتاتشي، كقائمة لا نهائية:

-- Point-free style
fib :: Int -> Integer
fib = (fibs !!)
       where fibs = 0 : scanl (+) 1 fibs

-- Explicit
fib :: Int -> Integer
fib n = fibs !! n
        where fibs = 0 : scanl (+) 1 fibs

-- with a similar idea, using zipWith
fib :: Int -> Integer
fib n = fibs !! n
        where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

-- Using an extra parameter
fib :: Int -> Integer
fib n = (fibs 0 1) !! n
        where fibs a b = a : fibs b (a+b)

تشير الكتابة "Int" إلى عدد صحيح (machine-sized) (تستخدم كقائمة رموز سفلية مع المُعامل !!)، بينما "عدد صحيح" هو عدد صحيح ذو دقة تامة. وعلى سبيل المثال، فالكود الموجود بالأعلي يحسب سريعا "fib10000" كعدد من 2090-رقم.

التطبيقات

تلتزم كافة التطبيقات التالية أو " معظمها تقريبا" لمعايير هاسكل 98، ويتم توزيعها برخص مصدر مفتوح. وحاليا لاتوجد ملكية لتطبيقات هاسكل.

  • المترجم جلاسجو هاسكل (GHC) يترجم الأكواد الأصلية إلى عدد ذو بنيات مختلفة – وكذلك مع لغة C وفقا للمعهد الأمريكي للمعايير الوطنية ANSI C -- مستخدما سي - - كلغة متوسطة. ويعتبر مترجم جلاسجو هاسكل هو الأكثر شيوعا في مترجمات هاسكل، وهناك قليل للغاية من المكتبات المفيدة التي تعمل فقط مع مترجم جلاسجو (مثل أوبن جي إل). ويوزع مترجم جلاسجو جنبا الي جنب مع نظام هاسكل.
  • جوفر كان عبارة عن لهجة تعليمية لهاسكل، بخاصية تسمى " فئات المشيد" والتي قام مارك جونز بتطويرها. وحل محلها هوجز (Hugs) (انظر أدناه).
  • اتش بي سي HBC هو عبارة عن مترجم آخر للكود الأصلي لهاسكل. لم يتم تطويره بفعالية لبعض الوقت ولكنه ما زال مستخدماً.
  • هيليوم هي لهجة جديدة من لهجات هاسكل. وتهدف إلى جعلها سهلة التعلم عن طريق توفير رسائل أوضح للأخطاء. وهي حالياً تفتقر إلى الدعم الكامل لأنواع الكتابة، مما يجعلها غير متوافقة مع أنواع عديدة من برامج هاسكل.
  • مترجم أوتريخت هاسكل (UHC) هو عبارة عن تطبيق لهاسكل من جامعة أوتريخت. ويدعم المترجم اوتريخت هاسكل جميع خصائص هاسكل 98 تقريباُ بالإضافة إلى دعمه للعديد من الامتدادات التجريبية. ويتم تطبيقه باستخدام قواعد خصائصية وحالياً يستخدم بصورة رئيسية للبحث في أنظمة الكتابة المُحدثة وكذلك في امتدادات اللغة.
  • مستخدم نظام جوفر بهاسكل (Hugs) هو عبارة عن مُفسر تشفير ثتائي. ويقدم هوجز ترجمة سريعة للبرامج وسرعة تنفيذ معقولة. كما يأتي هوجز مع مكتبة رسومات بسيطة. ويعتبر هوجز مناسب لمن يتعلمون أساسيات هاسكل، ولكنه ليس تطبيق "صغير" علي الإطلاق. وهو أكثر تطبيقات هاسكل محمولاً وأخفها.
  • جي اتش سي JHC هو عبارة عن مترجم هاسكل تم كتابته بواسطة جون ميتشان، ويتميز بالسرعة والكفاءة في توليد البرامج بالإضافة الي استكشاف تحويلات البرامج الجديدة. ويعد LHC تشعُب مستحدث من Jhc.
  • إن إتش سي 98 nhc عبارة عن مترجم تشفير ثنائي آخر، ولكن ثنائية التشفير تعمل بصورة أسرع بكثير من عملها مع تطبيق هوجزHugs. ويركزNhc98 علي تقليل استخدام الذاكرة، وهو اختيار جيد خاصة للأجهزة القديمة والبطيئة.
  • المترجم يورك هاسكل Yhc كان عبارة عن تشعُب من nhc98، ويهدف إلى أن يصبح أبسط، وأكثر كفاءة ومحمولاً، وتقديم دعم للتطبيق هاتHat، (مُتتبع هاسكل). كما يدعم أيضا خلفية جافاسكريبت التي تسمح للمستخدمين بتشغيل برامج هاسكل في متصفح الويب.

تطبيقات

يتزايد استخدام هاسكل في الاستخدامات التجارية.[19] قامت المُبرمجة أودري تانج بعمل تطبيق من أجل بيرل 6 المنتظر طويلا يسمى Pugsوهو عبارة عن مترجم ومفسر أثبت أهميته بعد أشهر قليلة فقط من كتابته؛ وبالمثل المترجم جلاسجو الذي دائما ما يستخدم كمُختبِر لخصائص وتحسينات البرمجة الوظيفية المتقدمة. داركس Darcs هو نظام مراجعة وتحكم تمت كتابته بلغة هاسكل، ويتميز بخصائص مبتكرة عديدة. كما اختارت لينسبير جنو/ لينكس Linspire GNU/Linux هاسكل لتطوير أدوات النظام.[20] وكذلك اكس موناد Xmonad وهو نظام مدير النوافذ لنظام النوافذ إكس، مكتوبة بلغة هاسكل بالكامل.

نظام بلوسبك فيرلوج عبارة عن لغة لتصميم شبه موصل وهي امتداد للغة هاسكل. كما ان أداوت شركة بلوسبك تم تطبيقها في لغة هاسكل. كريبتول Cryptol هي عبارة عن لغة وسلسلة من الأدوات المستخدمة لتطوير وتدقيق الأكواد الحسابية، ويتم تطبيقه في لغة هاسكل. والنوية (microkernel) أول موثق رسميا وسيل4 الذي تم تدقيقه باستخدام هاسكل.

اللغات المتعلقة بهاسكل

لغة التنظيف المتزامن "Concurrent Clean" وهي مرتبطة للغاية بلغة هاسكل. ومن أكبر انحرافاتها عن لغة هاسكل نجده في استخدامها للكتابات المتفردة بدلا من كتابات موناد من أجل I/O وكذلك الآثار الجانبية.

هناك مجموعة من اللغات التي استوحت من اللغة هاسكل، ولكن بنظم كتابة مختلفة، والتي تم تطوريها ومنها:

  • ايبجرام: هي لغة وظيفية بأنظمة كتابية مستقلة تناسب لاختبار خصائص البرامج.
  • أجدا: لغة وظيفية بأنظمة كتابية مستقلة.

كما توجد لغات اخري متعلقة بهاسكل :

  • كوري: هي لغة مبنية علي هاسكل.
  • جاسكل: هي لغة برمجة كتابة وظيفية، تعمل في جافا في إم.

واستخدمت هاسكل كاختبار للعديد من الأفكار الجديدة في تصميمات اللغة. وهناك عدد كبير من المنتجات المتنوعة لهاسكل والتي تستكشف الأفكار الجديدة للغة وتشمل:

  • هاسكل المتوازية:
    • من جامعة جلاسجو وتدعُم مجموعة من الأجهزة كما تدعم جهاز واحد بمعالجات متعددة.[21][22] كما تدعم هاسكل عمليات التشغيل المتزامنة متعددة المعالجات والمتناسقة.[23]
    • من إم أي تي MIT[24]
  • هاسكل الموزعة (جوفن سابقاً) وإدين.
  • هاسكل الطموحة، تقوم على التقييم التأمُلي.
  • العديد من الإصدارات الشيئية الموجهة مثل : هاسكل++ وموندريان.
  • هاسكل العام، إصدار من هاسكل يتميز بنظام كتابي يدعم البرامج الشاملة.
  • أو-هاسكل، امتداد لهاسكل يضيف توجيه شيئي ويدعم البرمجة المتزامنة.
  • التابع، عبارة عن قيمة فرضية دقيقة (تُتيح التكاسل من خلال التعليق) وهي من لهجات هاسكل والتي تدعم التحديث التدميري، وكذلك التأثيرات الحسابية كما تدعم كتابة عروض الحقول الموجهة والجودة الوظيفية المصاحبة.
  • سكوتش، وهو عبارة عن هجين بين هاسكل وبايسون[25]

النقد

في عامي 2002 و2003 ناقش كلاً من جان ويليام مايسن وسيمون بيتون جونز المشكلات المرتبطة بالتقييم الكسول مع إقرار الدافع النظري له،[26][27] بالإضافة إلى اعتبارات الممارسة الصرفية مثل الأداء المُحسن.[28] كما لاحظوا انه عند إضافة بعض التحسينات لرفع الأداء، فإن الكسل يزيد الأمر صعوبة علي المبرمجين لتقييم أداء أكوادهم (وخاصة استخدام مساحاتها).

في عام 2003 لاحظ كل من: باستيات هيران ودان ليين وأريان فان إيزيندورن وجود بعض العوائق أمام دارسي لغة هاسكل، فقد لوحظ أن نظام الكتابة المعقد والقواعد اللغوية الدقيقة لهاسكل هي سلاح ذو حدين، فهو محل تقدير كبير من قِبل المبرمجين ذوي الخبرة بينما هو مصدر إحباط للمبتدئين، نظرا لأن عمومية تطبيقات هاسكل تؤدي إلى رسائل خطأ مُبهمة.[29] ولمعالجة تلك المسائل، قام باحثون من جامعة اُوتريخت بتطوير مترجم متقدم يسمي هيليوم والذي يقوم بتحسين استقبال المستخدمين لرسائل الخطأ عن طريق الحد من عمومية بعض خصائص هاسكل، وبالتحديد إزالة دعمها لفئات الكتابة.

قام بِن ليبميير بتصميم التابع[30] كقيمة فرضية دقيقة (تطبيق كسول من خلال ملحقات واضحة) وهو من لهجات هاسكل التي تدعم نظام الكتابة والتأثير، وقد صُمم لمعالجة صعوبات هاسكل في التفكير بشأن التقييم الكسول وفي استخدام بنيات البيانات التقليدية مثل المصفوفات المتغيرة.[31] لقد حاول ليبميير (ص: 20) أن يبرهن علي أن "التحديث المُدمر يُزود المبرمجين بإثنتين من الأدوات الهامة والقوية... الأولى هي مجموعة بنيات البيانات الفعالة مثل المصفوفات من أجل إدارة مجموعة من الكائنات... والثانية هي إمكانية بث قيمة جديدة لجميع أجزاء برنامج ما مع أدني عبء علي المبرمج."

المؤتمرات وورش العمل

يتقابل مجتمع هاسكل بصورة منتظمة وذلك لأنشطة البحث والتطوير. والأحداث الرئيسية هي:

  • ندوة هاسكل (ورشة عمل هاسكل السابقة).
  • ورشة عمل هاسكل للمنفذين.
  • المؤتمر الدولي للبرمجة الوظيفية.

ومنذ عام 2006 أصبح هناك سلسلة من الإجراءات المنظمة، سلسلة Hac، والتي تهدف إلى تحسين أدوات ومكتبات لغات البرمجة وذلك مثل:

  • منطقة خليج سان فرانسيسكو، فبراير2011
  • غنت، نوفمبر2010
  • كييف، أكتوبر2010
  • هاكاثون الأسترالي، يوليو2010
  • فيلادلفيا، مايو2010
  • زيورخ، مارس2010
  • بورتلاند، اُو ار، سبتمبر2009
  • إيدينبرج، اُغسطس2009
  • فيلادلفيا، يوليو2009
  • اُوتريخت، أبريل2009
  • لييبزيغ، أبريل2008
  • جوتبرغ، أبريل2008
  • فرايبورغ، أكتوبر2007
  • أكسفورد، يناير2007
  • بورتلاند، سبتمبر2006

ومنذ عام 2005، تشكلت أعداد متزايدة من مجموعات مستخدمي هاسكل، في كل من الولايات المتحدة وكندا وأستراليا وأمريكا الجنوبية وأوروبا وآسيا.

انظر أيضا

المراجع

  1. A history of Haskell:being lazy with class — تاريخ الاطلاع: 3 أكتوبر 2016 — الناشر: SIGPLAN — تاريخ النشر: 2007
  2. Chevalier, Tim (January 28, 2008). "anybody can tell me the pronuncation of "haskell"?". Haskell-cafe (Mailing list). مؤرشف من الأصل في 25 أكتوبر 2014. اطلع عليه بتاريخ 12 مارس 2011. الوسيط |CitationClass= تم تجاهله (مساعدة)
  3. Chevalier, Tim (January 28, 2008). "anybody can tell me the pronuncation of "haskell"?". Haskell-cafe (Mailing list). مؤرشف من الأصل في 26 يناير 2013. اطلع عليه بتاريخ 12 مارس 2011. الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. Haskell Report
  5. Burstall, Rod (2000), "Christopher Strachey—Understanding Programming Languages", Higher-Order and Symbolic Computation, 13 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link)
  6. Curry, Haskell (1934), "Functionality in Combinatory Logic", Proceedings of the National Academy of Sciences, 20, صفحات 584–590 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link)
  7. Curry, Haskell B.; Feys, Robert (1958), Combinatory Logic Vol. I, Amsterdam: North-Holland الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link), with 2 sections by William Craig, see paragraph 9E
  8. De Bruijn, Nicolaas (1968), "Automath, a language for mathematics", TH-report 68-WSK-05, Department of Mathematics, جامعة آيندهوفن للتكنولوجيا الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link) Reprinted in revised form, with two pages commentary, in: "Classical papers on computational logic 1967-1970", Automation and Reasoning, 2, Springer Verlag, 1983, صفحات 159–200 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link)
  9. Howard, William A. (1980) [original paper manuscript from 1969], "The formulae-as-types notion of construction", in Seldin, Jonathan P.; Hindley, J. Roger (المحررون), To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, Boston, MA: Academic Press, صفحات 479–490, ISBN 978-0-12-349050-6 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link).
  10. "Preface". Haskell 98 Language and Libraries: The Revised Report. 2002. مؤرشف من الأصل في 02 فبراير 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  11. Hudak, Paul; Hughes, John; Peyton Jones, Simon; Wadler, Philip (2007). "A history of Haskell: being lazy with class". Proceedings of the third ACM SIGPLAN conference on History of programming languages (HOPL III). doi:10.1145/1238844.1238856. الوسيط |CitationClass= تم تجاهله (مساعدة)
  12. Simon Peyton Jones (editor) (2002). "Haskell 98 Language and Libraries: The Revised Report". مؤرشف من الأصل في 05 أبريل 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)صيانة CS1: نص إضافي: قائمة المؤلفون (link)
  13. "Welcome to Haskell'". The Haskell' Wiki. مؤرشف من الأصل في 09 أكتوبر 2012. اطلع عليه بتاريخ أغسطس 2020. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  14. Marlow, Simon (24 November 2009). "Announcing Haskell 2010". Haskell (Mailing list). مؤرشف من الأصل في 9 نوفمبر 2020. اطلع عليه بتاريخ 12 مارس 2011. الوسيط |CitationClass= تم تجاهله (مساعدة)
  15. Wadler, P.; Blott, S. (1989). "How to make ad-hoc polymorphism less ad hoc". Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. رابطة مكائن الحوسبة: 60–76. doi:10.1145/75277.75283. الوسيط |CitationClass= تم تجاهله (مساعدة)
  16. Hallgren, T. (January 2001). "Fun with Functional Dependencies, or Types as Values in Static Computations in Haskell". Proceedings of the Joint CS/CE Winter Meeting. Varberg, Sweden. مؤرشف من الأصل في 29 مارس 2010. الوسيط |CitationClass= تم تجاهله (مساعدة)
  17. "HackageDB statistics". مؤرشف من الأصل في 3 مايو 2013. اطلع عليه بتاريخ أغسطس 2020. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  18. Computer Language Benchmarks Game نسخة محفوظة 01 ديسمبر 2012 على موقع واي باك مشين.
  19. See Industrial Haskell Group for collaborative development, Commercial Users of Functional Programming for specific projects and Haskell in industry for a list of companies using Haskell commercially نسخة محفوظة 08 أبريل 2017 على موقع واي باك مشين.
  20. "Linspire/Freespire Core OS Team and Haskell". Debian Haskell mailing list. 2006. مؤرشف من الأصل في 27 ديسمبر 2017. الوسيط |CitationClass= تم تجاهله (مساعدة)
  21. Glasgow Parallel Haskell نسخة محفوظة 04 يونيو 2017 على موقع واي باك مشين.
  22. GHC Language Features: Parallel Haskell نسخة محفوظة 07 أكتوبر 2014 على موقع واي باك مشين.
  23. Using GHC: Using SML parallelism نسخة محفوظة 07 أكتوبر 2014 على موقع واي باك مشين.
  24. MIT Parallel Haskell نسخة محفوظة 24 يونيو 2017 على موقع واي باك مشين.
  25. Scotch نسخة محفوظة 25 مارس 2016 على موقع واي باك مشين. [وصلة مكسورة]
  26. Jan-Willem Maessen. Eager Haskell: Resource-bounded execution yields efficient iteration. Proceedings of the 2002 رابطة مكائن الحوسبة SIGPLAN workshop on Haskell.
  27. Simon Peyton Jones. Wearing the hair shirt: a retrospective on Haskell. Invited talk at POPL 2003. نسخة محفوظة 27 أكتوبر 2008 على موقع واي باك مشين.
  28. Lazy evaluation can lead to excellent performance, such as in The Computer Language Benchmarks Game نسخة محفوظة 13 فبراير 2015 على موقع واي باك مشين.
  29. Heeren, Bastiaan; Leijen, Daan; van IJzendoorn, Arjan (2003). "Helium, for learning Haskell" (PDF). Proceedings of the 2003 رابطة مكائن الحوسبة SIGPLAN workshop on Haskell. مؤرشف من الأصل (PDF) في 4 فبراير 2007. اطلع عليه بتاريخ أكتوبر 2020. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  30. DDC - HaskellWiki نسخة محفوظة 02 يناير 2015 على موقع واي باك مشين.
  31. Ben Lippmeier, Type Inference and Optimisation for an Impure World, الجامعة الوطنية الأسترالية (2010) PhD thesis, chapter 1 نسخة محفوظة 25 مايو 2013 على موقع واي باك مشين.

    وصلات خارجية

    • بوابة برمجة الحاسوب
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.