ام‌ال (زبان برنامه‌نویسی)

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
ام‌ال (به
Please, ورود or عضویت to view URLs content!
: ML)، یک
Please, ورود or عضویت to view URLs content!
همه منظوره است که توسط رابین میلنر و همکاران در اواخر دهه ۱۹۷۰ در
Please, ورود or عضویت to view URLs content!
توسعه یافت.
Please, ورود or عضویت to view URLs content!
این زبان از
Please, ورود or عضویت to view URLs content!
الهام گرفته است.

کلمه ML از فوق زبان (Meta Language) گرفته شده است. ام‌ال برای بهبود بخشیدن به رویه اثبات در قضیه LFC طراحی شده است. این برای کاربرد آن در الگوریتم استنتاج نوع هیندلی- میلنر که به طور خودکار اکثر عبارت‌ها بدون نیاز به تفسیر نوع صریح شناخته شده است.


مرور کلی
ام‌ال معمولاً به عنوان یک زبان تابعی ناخالص یاد می‌شود. چرا که به اثرات جنبی و بنابراین برنامه نویسی امری، بر خلاف زبان
Please, ورود or عضویت to view URLs content!
خالص مانند هاسکل، اجازه می‌دهد. به همین دلیل ام‌ال یک زبان برنامه‌نویسی چند نمونه‌ای (multi-paradigm) نیز عنوان می‌شود.

خصوصیات ام‌ال شامل استراتژی سنجش فراخوانی با مقدار (call – by – value)، توابع درجه یک،
Please, ورود or عضویت to view URLs content!
خودکار در مواجه با مجموعه داده‌های ناخواسته، چندریختی پارامتریک و انواع پویا، انواع استنتاج، انواع داده‌های جبری، ازمون الگو و
Please, ورود or عضویت to view URLs content!
استثناء است.

برخلاف هاسکل، ام‌ال از
Please, ورود or عضویت to view URLs content!
استفاده می‌کند به این معنا که تمام عبارات همگی ارزیابی می‌شوند. در نتیجه شما نمی‌توانید مستقیماً از لیست‌های نامحدود استفاده کنید. هرچند
Please, ورود or عضویت to view URLs content!
و بنابراین ساختمان داده‌های نامحدود مانند لیست‌ها می‌توانند به واسطهٔ توابع بی نام
Please, ورود or عضویت to view URLs content!
شوند.

امروزه زبان‌های مختلفی در خانواده‌ام‌ال است دو گویش اصلی آن
Please, ورود or عضویت to view URLs content!
و Caml است. اما بقیه شامل F# که یه پروژهٔ تحقیق باز که هدف .NET
Please, ورود or عضویت to view URLs content!
بود نیز وجود دارند. ایده‌های ام‌ال در زبان‌های بی شماری نفوذ کرده است مانند هاسکل و Cyclone و Nemerle.

از توانایی‌های ام‌ال معمولاً در طراحی زبان بکار بـرده می‌شود (کامپایلرها، استفاده برای تحقیقات زیستی، سیستم‌های مالی و کاربردها شامل پایگاه داده‌های
Please, ورود or عضویت to view URLs content!
ها، برنامهٔ سرویس دهنده / سرویس گیرنده
Please, ورود or عضویت to view URLs content!
.

مثال هایی از ام‌ال
تشریح برنامهٔ ام‌ال خالص

برنامهٔ Hello world! یک زبان تابعی، تابع فاکتوریل است. به عنوان یک ام‌ال خالص:

fun fac (0 : int) : int = 1
| fac (n : int) : int = n * fac (n-1)

این فاکتوریل را به عنوان یک
Please, ورود or عضویت to view URLs content!
با یک وضعیت پایه (base case) محدود توصیف می‌کند. این شبیه تعاریف فاکتوریل یافت شده در
Please, ورود or عضویت to view URLs content!
ریاضیات است. بسیاری از کدهای ML از نظر امکانات و نحو نیز شبیه ریاضیات است.

قسمتی از تعریف نشان داده شده اختیاری است و نوع این تابع را تعریف می‌کند.
Please, ورود or عضویت to view URLs content!
E: می‌تواند به عنوان عبارت E که دارای نوع t هست تلقی شود. برای مثال متغیر n، برای نوع صحیح (integer) است و نتیجهٔ اجرای fac برای n (fac(n) ) هم نوع صحیح دارد.

بنابراین تابع فاکتوریل تابعی از نوع صحیح به نوع صحیح ( int -> int ) است. به خاطر نوع استنتاج، حاشیه نویسی نوع می‌تواند حذف شود و توسط کامپایلر نتیجه گیری شود. بازنویسی بدون درج نوع مانند مثال:

fun fac 0 = 1
| fac n = n * fac (n-1)

تابع همچنین وابسته به آزمون الگو است و این یک بخش مهم برنامه نویسی ML است. توجه کنید که پارامترهای تابع لزوماً در پرانتز نیستند اما حتماً توسط
Please, ورود or عضویت to view URLs content!
جدا شده‌اند. زمانی که متغیر ورودی تابع 0 است، تابع نوع صحیح 1 برمی گرداند، برای حلات دیگر خط دوم اجرا خواهد شد. این خط بازگشتی است و تابع را دوباره فراخوانی و اجرا می‌کند تا زمانی که به وضعیت پایه برسد.
 

برخی موضوعات مشابه

بالا