جاوید دات کام !
اولين و بزرگترين وب سايت دانلود فارسي
زبان برنامه نویسی Haskell مشاهده در قالب پی دی اف چاپ فرستادن به ایمیل
آموزش - متفرقه
نوشته شده توسط محمد اعتمادی   
جمعه, 25 مرداد 1387 10:04
تعریف


Haskell زبان برنامه نویسی تابعی استاندارد شده با زبان شناسی غیر قطعی، بعد از Haskell Curry نام گذاری شد. این زبان با کمیته ای که در سال 1980 برای بیان هدف شناساندن این چنین زبانی شکل گرفت، ایجاد شد. آخرین استاندارد زبان نیمه رسمی Haskell 98 نامزد زبان آسان و سبک برای آموزش و به عنوان پایه ای برای گسترش های آینده است. زبان به تکامل خود به سرعت با Hugs و GHC که نشان دهنده ی استاندارد بالفعل جاری هستند، ادامه می دهد.
جالب ترین جنبه Haskell شامل پشتیبانی از توابع بازگشتی و انواع داده ای، مطابقت با الگو، درون یابی لیست و عبارات دفاعی می باشد. ترکیب این خصوصیات می تواند توابعی را بسازد که نوشتن آنها در زبان برنامه نویسی شیوه ای سخت خواهد بود ولی غالباً اجرای آن در Haskell آسان است در سال 2002، این زبان یک زبان تابعی است که اغلب تحقیقات روی آن صورت گرفته است. چندین گونه از این زبان توسعه یافته اند: نسخ همگون با MIT و Glasgow ، هر دو Haskell مشابه نامیده می شوند. نسخی که بیشتر نظیر دارند و تقسیم شده اند، Haskell تقسیم شده خوانده می شوند (سابقاً Goffin) و Eden ، نسخه ارزیابی نظری ، Haskell خواهان نامیده می شود و چندین نسخ شی گرا: Haskell ++ ، Mondrian و O' Haskell .
یک زبان مشابه Haskell نیز موجود است که روش های جدید پشتیبانی از پیشرفت GUI را ارائه می دهد که کاملاً همگام نامیده می شود. بزرگترین تفاوت این زبان با Haskell در استفاده از انواع یکتا برای ورودی به دلیل ضدیت با واحدیت است.
نسخه تحصیلاتتی Haskell که Gofer نامیده می شود توسط Mark Jones توسعه یافت. این نسخ توسط HUGS غصب شده است.

مثال ها

تعریف کلاسیک از تابع فاکتوریل
کد:
fac 0 = 1
fac n = n * fac ( n - 1 )
تعریف بامزه از تابع فاکتوریل ( با استفاده از لیست علامت گذاری، Haskell درون ساختی و تابع استاندارد product):
fac n = product img/daneshnameh_up/c/cc/compics054.jpg1.. n img/daneshnameh_up/5/56/compics055.jpg.
پیاده سازی ساده از تابع که n امین عدد را در سری فیبونانچی برمی گرداند:
کد:
fib 0 = 0
fib 1 = 1
fib n = fib ( n - 2 ) + fib ( n - 1 )
تابعی که لیست اعداد فیبونانچی را در زمان خطی باز می گرداند:
کد:
fibs@ ( - : rest ) = 0 : 1 : ( zipwith (+) fibs rest )
تابع قبلی به دلیل ارزیابی کند و آهسته یک لیست محدود را تولید می کند. یکی از پیاده سازی ممکن fib عبارتست از:
کد:
fib n = fibs ! ! n
( !! ؟ است که n امین عنصر از لیست را می دهد).
الگوریتم مرتب سازی سریع می تواند به گونه ای برازنده در Haskell به کمک درون یابی لیست بیان شود.
کد:
qsort [] = []
qsort ( pivot : tail ) =
qsort left ++img/daneshnameh_up/c/cc/compics054.jpg pivot img/daneshnameh_up/5/56/compics055.jpg ++ qsort right
where
] left = y l y < - tail ' y < pivot ]
] right = y l y < - tail ' y >= pivot ]
( توجه کنید که کپی شدن منوط و زنجیره بودن لیست این کد بسته به پیاده سازی اش می تواند آهسته تر باشد.)

پیاده سازی

موارد زیر خیلی یا اندکی شبیه به استانداردهای 98 Haskell هستند و تحت جوازهای منابع باز تقسیم بندی شده اند. در حال حاضر پیاده سازی تجاری Haskell موجود نیست.
1- Hugs مترجم کدهای بایت است. و به سرعت برنامه ها را تلفیق و اجرا می کند. همچنین با یک کتابخانه گرافیکی ساده ظاهر شده است. Hugs برای افرادی که قصد دارند اصول پایه ای Haskell را بیاموزند مناسب است ملی به این معنی نیست که یک وسیله بازی است. Hugs سبک ترین و ساده ترین پیاده سازی Haskell است.
2- GHC به کدهای نهادی از معماران متفاوتی تالیف می کند. و همچنین می تواند به C تالیف کند. شاید GHC، معروف ترین مولف Haskell باشد و چندین کتابخانه قابل استفاده که تنها با GHC کار می کنند موجود است (محدود شده به OpenGL )
3- nhc98 یک دیگر ار مولفان کد بایتی است، ولی عموماً کد بایتی ای که سریع تر از Hugs باشد nhc98 به حداقل رساندن استفاده از حافظه توجه کرده است و عملاً انتخاب مناسبی برای ماشین های کندتر و قدیمی تراست.
4- HBC مولف Haskell دیگری برای کدهای نهادی است. HBC به طور فعال توسعه نیافته است ولی هنوز هم قابل استفاده می باشد.
5- Helium جدیدترین گویش Haskell است. هدف اصلی آن آسان کردن یادگیری Haskell می باشد، در حال حاضر فقدان برخی از انواع کلاس ها، آنرا با برخی از برنامه های Haskell ناسازگار ساخته است.

source: wikipedia - fa
 
اولین و بزرگترین وب سایت دانلود فارسی
اولين و بزرگترين وب سايت دانلود فارسي

نظرسنجي

از کدام نسخه از سرور روبوکاپ بیشتر خوشتان میاد؟
 

مسابقات پیش رو

مسابقه خوارزمی

زمان دانش آموزی:

22 الی 24 آبان 1387
دانشگاه خواجه نصیر الدین-تهران

زمان دانشجویی:
17 الی 19 آبان 1387
مجتمع عصر انقلاب-شهریار

(نتایج مسابقه)


China Open 2008
زمان و مکان:
15 الی 17 آذر 1387
شهر ژونگ شا-چین
Powered By Joomla! And Translation By JoomFa Team
Template Design by: Omid Pilevar | Host by: Hostiran.net