(به : )، یک همه منظوره است که توسط رابین میلنر و همکاران در اواخر دهه ۱۹۷۰ در توسعه یافت. این زبان از الهام گرفته‌است.
 کلمه ML از فوق زبان (Meta Language) گرفته شده‌است. ام‌ال برای بهبود بخشیدن به رویه اثبات در قضیه LFC طراحی شده‌است. این برای کاربرد آن در الگوریتم استنتاج نوع هیندلی- میلنر که به‌طور خودکار اکثر عبارت‌ها بدون نیاز به تفسیر نوع صریح شناخته شده‌است.
 ام‌ال معمولاً به عنوان یک زبان تابعی ناخالص یاد می‌شود چرا که به اثرات جنبی و بنابراین برنامه‌نویسی امری، بر خلاف زبان برنامه‌نویسی تابعی خالص مانند هاسکل، اجازه می‌دهد. به همین دلیل ام‌ال یک زبان برنامه‌نویسی چند نمونه‌ای (multi-paradigm) نیز عنوان می‌شود.
 برنامه‌هایی که در این زبان نوشته می‌شود شامل عباراتی است که مخالف دستورات ارزیابی می‌شوند با وجود اینکه برخی از عبارات یک مقدار بدیهی را برمی‌گردانند که فقط برای اثرات جانبی ارزیابی می‌شوند.
 
مانند تمام زبان‌های برنامه‌نویسی تابعی، یک ویژگی کلیدی این زبان تابع است. تابع فاکتوریل را در کد زیر نگاه کنید: یک کامپایلر استاندارد برای پی بردن به نوع استاتیک int -> int این تابع بدون اینکه کاربر نیاز داشته باشد یادداشت کند. می‌توان استنباط کرد که متغیر n فقط در عبارات از نوع عدد صحیح استفاده می‌شود و خودش هم باید از نوع عدد صحیح باشد و تمامی اعدادی که توسط عبارات تولید می‌شود از نوع عدد صحیح است.
 خصوصیات ام‌ال شامل استراتژی سنجش فراخوانی با مقدار (call – by – value)، توابع درجه یک، خودکار در مواجه با مجموعه داده‌های ناخواسته، چندریختی پارامتریک و انواع پویا، انواع استنتاج، انواع داده‌های جبری، آزمون الگو و استثناء است.
 برخلاف هاسکل، ام‌ال از استفاده می‌کند به این معنا که تمام عبارات همگی ارزیابی می‌شوند. در نتیجه شما نمی‌توانید مستقیماً از لیست‌های نامحدود استفاده کنید. هرچند و بنابراین ساختمان داده‌های نامحدود مانند لیست‌ها می‌توانند به واسطهٔ توابع بی نام شوند.
 امروزه زبان‌های مختلفی در خانواده‌ام‌ال است دو گویش اصلی آن و Caml است. اما بقیه شامل F# که یه پروژهٔ تحقیق باز که هدف .NET بود نیز وجود دارند. ایده‌های ام‌ال در زبان‌های بی شماری نفوذ کرده‌است مانند هاسکل و Cyclone و Nemerle.
 از توانایی‌های ام‌ال معمولاً در طراحی زبان بکار برده می‌شود (کامپایلرها، استفاده برای تحقیقات زیستی، سیستم‌های مالی و کاربردها شامل پایگاه داده‌های ، برنامهٔ سرویس دهنده / سرویس گیرنده .
 
زبان sml را به راحتی می‌توان یادگرفت برای این کار باید ان را به یک سطح بالاتر وارد کرد که به ان یک حلقه خواندن-محاسبه-چاپ یا repl می‌گویند. این یک جلسه تعاملی است که در ان معنی عبارت‌های از پیش تعیین شده مشخص می‌شود. بسیاری از پیاده‌سازی‌های sml شامل repl می‌شود از جمله sml/nj: کد می‌تواند بعد از "-" وارد شود. به عنوان مثال برای محاسبه ۲*3+1: sml با استنتاج در سطح بالا نشان می‌دهد که نتیجه دارای نوع "int" و مقدار "۷" می‌باشد.
 
برنامه زیر برنامه "hello.sml" است: که با دستور زیر می‌توان ان را کامپایل کرد:
 $ mlton hello.sml
 و با این دستور می‌توان ان را اجرا کرد:
 $. /hello
 Hello world!
 
مرتب‌سازی درجی برای اعداد صحیح (صعودی) است به اختصار به شرح زیر بیان می‌شود: در اینجا ما از نشان ">>" برای مرتب‌سازی در اینجا استفاده می‌کنیم: نوع تابع ('insertionSort) از نوع ('a * 'a -> bool) -> ('a list) -> ('a list) می‌باشد.
 
مرتب‌سازی سریع از نماد "<<" برای این کار استفاده می‌کند: برنامهٔ Hello world! یک زبان تابعی، تابع فاکتوریل است. به عنوان یک ام‌ال خالص:
 این فاکتوریل را به عنوان یک با یک وضعیت پایه (base case) محدود توصیف می‌کند. این شبیه تعاریف فاکتوریل یافت شده در ریاضیات است. بسیاری از کدهای ML از نظر امکانات و نحو نیز شبیه ریاضیات است.
 قسمتی از تعریف نشان داده شده اختیاری است و نوع این تابع را تعریف می‌کند. E: می‌تواند به عنوان عبارت E که دارای نوع t هست تلقی شود. برای مثال متغیر n، برای نوع صحیح (integer) است و نتیجهٔ اجرای fac برای n (fac(n)) هم نوع صحیح دارد.
 بنابراین تابع فاکتوریل تابعی از نوع صحیح به نوع صحیح (int -> int) است. به خاطر نوع استنتاج، حاشیه‌نویسی نوع می‌تواند حذف شود و توسط کامپایلر نتیجه‌گیری شود. بازنویسی بدون درج نوع مانند مثال:
 تابع همچنین وابسته به آزمون الگو است و این یک بخش مهم برنامه‌نویسی ML است. توجه کنید که پارامترهای تابع لزوماً در پرانتز نیستند اما حتماً توسط جدا شده‌اند. زمانی که متغیر ورودی تابع ۰ است، تابع نوع صحیح ۱ برمی‌گرداند، برای حلات دیگر خط دوم اجرا خواهد شد. این خط بازگشتی است و تابع را دوباره فراخوانی و اجرا می‌کند تا زمانی که به وضعیت پایه برسد.
 پیاده‌سازی‌های بسیاری برای sml معرفی شده‌اند از:
 
 
 
 
 
 
 
 
 
 
 
 
 
 تمامی این پیاده‌سازی‌ها متن-باز و مجانی هستند. دیگر هیچگونه نسخهٔ پولی از sml وجود ندارد.
 
 
 
 
 
 
 
 
 
 ویکی‌پدیای انگلیسی
Wikipedia contributors, "ML (programming language)," Wikipedia, The Free Encyclopedia,
{"title": "ام‌ال", "link": "https://fa.wikipedia.org//w/index.php?title=%D8%A7%D9%85%E2%80%8C%D8%A7%D9%84&oldid=30942544", "language": "fa"}