عبارتهای لاندا (Lambda)
دوشنبه 29 آذر 1389 7:31 AM
دیگر عبارتهای ویژه لاندا میباشد که برای وصل کردن متغیرها به مقادیرشان که درون یک عبارت ارزیابی میشوند استفاده میشود. این عملگر همچنین برای ایجاد کردن توابع هم استفاده میشود. آرگومانهای درون لاندا یک لیستی از آرگومانها هستند و عبارت ارزیابی توابع میباشند. مقادیر بازگشتی مقادیری از عبارت قبلی که ارزیابی شدهاند هستند. عبارت (Lambda(arg)(+arg1)) زمانی که این تابع به کار برده میشود به صورت یک تابع ارزیابی میشود و وظیفهٔ این تابع معرفی کردن یک آرگومان و اتصال دادن آرگومان به arg و در نهایت برگرداندن یک عدد بزرگتر از آرگومان قبلی میباشد عبارتهای لاندا خیلی متفاوت با نام تابع رفتار نمیکند بنابراین اگر در عبارت (Lambda(arg)(+arg1))5->6 عدد 5 را وارد کنیم خروجی آن 6 میشود. اتمها : در نسخهٔ اصلی لیسپ دو نوع دادهٔ ابتدایی وجود دارد: اتمها و لیستها یک لیست یک رشتهٔ منظم و محدودی از عناصر میباشد ، که هر عنصر در درون خودش یکی از این اتمها و یا لیستها را دارد و یک اتم یک عدد یا یک نماد میباشد. در اصل یک نماد یک رقم منحصر به فرد میباشدو به عنوان یک رشتهٔ عددی در سورس کد نوشته شده و هر دو به عنوان یک نام متغیر و یک رقم دادهای در پردازش نمادین استفاده میشود برای مثال list(foo(BAR 1)2) شامل سه عنصر : Symbol foo و list(BAR 1) و عدد 2 میباشد. تفاوت اصلی بین اتمها و لیستها این است که اتمها تغییر ناپذیر و منحصر به فرد میباشند. دو اتم که دقیقا به یک صورت و به یک روش در یک شی نوشته شده باشد در مکان متفاوتی در سورس کد ظاهر میشوند، هر لیست یک شی مجزا میباشد و به خاطر اینکه مستقل از دیگر لیست هاست و از دیگر لیستها به وسیلهٔ مقایسهٔ عملگرها مشخص میشود.