زبان برنامهنویسی کوبول
(تلفظ: کوبول) یکی از قدیمی ترین زبان های برنامه نویسی است. نام کوبول که مخفف کلمهٔ mmon usiness-riented anguage است، حوزهٔ اصلی کار خود را در زمینه تجارت، امور مالی و سیستم های اجرایی برای شرکت ها و دولت ها قرار داد. کوبول استاندارد ۲۰۰۲، از زبان های برنامه نویسی شی گرا و ویژگی های دیگر زبا ن های مدرن حمایت می کند.
تاریخچه و معیارها
ویژگی های «کوبول» به وسیلهٔ فردی به نام گریس هاپر در نیمه دوم سال ۱۹۵۹ ایجاد شد. ماجرا در هشتم آوریل ۱۹۵۹ در یک همایش بین تولیدکنندگان کامپیوتر، استفاده کنندگان کامپیوتر و دانشگاهیان در مرکز کامپیوتر دانشگاه پنسیلوانیا اتفاق افتاد. وزارت دفاع آمریکا سپس حامی و اسپانسر فعالیت های بعدی شد. همایشی بوسیله کارلس آ. فیلیپس در پنتاگون در ۲۸ و ۲۹ ام ماه می (دقیقا یک سال بعد از همایش الگول ۵۸ در زوریخ برقرار شد. در آنجا تصمیم گرفته شد ۳ کمیته تشکیل شود: کوتاه مدت، میان مدت و بلند مدت(البته آخری هرگز تشکیل نشد). کمیته کوتاه مدت، که بوسیلهٔ (جوزف وگستین) به عنوان رئیس سازمان ملی استانداردهای ایالات متحده رهبری می شد، توانست در طول آن مدت نخستین نسخه کوبول را به وجود بیاورد. آن کمیته تشکیل شد تا یک دسترسی کوتاه مدت به یک زبان تجاری متداول را ارائه کند. این کمیته از شش تولید کنندهٔ کامپیوتر و سه آژانس دولتی تشکیل شده بود. شش تولید کننده کامپیوتر عبارتند از موسسه باروگ، IBM، هانی ول، اسپرس راند، آر-سی-ای و سیلوانیا الکتریک، سه آژانس دولتی عبارتند از: نیروی هوایی ایالات متحدهٔ آمریکا، David Taylor Model Basin و اداره ملی استانداردها (که امروزه به نام موسسهٔ ملی استاندارد و تکنولوژی نامیده میشود). کمیتهٔ میان مدت تشکیل شد ولی هرگز عملی نشد. در انتهای زمان کمیته اصلی کوتاه مدت، این کمیته موفق شد ویژگیهای زبان کوبول را ارتقا دهد. این کمیته اصلی توسط شش نفر تشکیل شده بود. این کمیته اصلی ویژگی های کوبول را تا دسامبر ۱۹۵۹ کامل کرد. این ویژگی ها حوزهٔ وسیعی است که از زبانهای فلوماتیک –که به عنوان مادر زبان کوبول از آن یاد میشود- که توسط فردی به نام ]]گریس هاپر[[ ابداع شد و نیز زبان های کامترن که توسط فردی به نام باب بمر ابداع شد ونیز زبان فکت الهام گرفته شد. تصمیم بر استفاده از نام «کوبول» در یک همایش در ۱۸ سپتامبر ۱۹۵۹ گرفته شد. اولین کامپایلر برای کوبول در سال ۱۹۶۰ تکمیل شد.
کوبول ۲۰۰۲ و کوبول شی گرا
این زبان تا به امروز رو به پیشرفت است. در اوایل دهه ۱۹۹۰ تصمیم گرفته شد تا ویژگی شی گرایی به نسخه کامل بعدی کوبول اضافه شود. تخمین اولیه این بود که این اصلاح تا سال ۱۹۹۷ انجام میشود. بعضی از مجریان کار (از قبیل Micro Focus، Fujitsu، VeryantوIBM) قواعد نحوی شی گرایی را بر اساس نسخه ۱۹۹۷ ونسخه های کامل دیگر به وجود آوردند.
مثل زبانهای برنامه نویسی C++ و جاوا کامپایلرهای شی گرای کوبول مانند زبان هایی که به سمت استاندارد سازی پیش می روند در دسترس هستند. Fujitsu و Micro Focus] از کامپایلرهای شی گرای کوبول با هدف قالب بندی دات نت حمایت کردند. کوبول سال ۲۰۰۲ شامل ویژگی های دیگری فراتر از شی گرایی است. این ویژگی ها عبارتند از:
- حمایت ملی از زبان
- پردازش محلی
- استفاده از توابع تعریف شده توسط کاربر
- اشاره گرها برای اخذ و آزادسازی حافظه
- حمایت برای اجرا در محیط کار مثل مایکروسافت دات نت و جاوا
- حمایت بیتی و باینری
- حمایت باینری “True”
- حمایت ممیز شناور
- نتایج ریاضی استاندارد
- نسل XML و تجزیه کردن
کوبول ۱۹۶۸
بعد از سال ۱۹۵۹ کوبول دستخوس تغییرات و اصلاحات متعددی شد. در یک تلاش برای غلبه بر مشکلات ناسازگاری بین نسخه های متفاوت کوبول، موسسه استاندارد جهانی ایالات متحده (ANSI) فرم استاندارد زبان را در سال ۱۹۶۸ به وجود آورد.
کوبول ۱۹۷۴
در سال ۱۹۷۴، موسسه استاندارد جهانی نسخه اصلاح شده کوبول را منتشر کرد که شامل تعدادی از ویژگی هایی بود که در نسخهٔ ۱۹۶۸ وجود نداشت.
کوبول ۱۹۸۵
در سال ۱۹۸۵، موسسسه استاندارد جهانی نسخه اصلاح شدهٔ دیگری را منتشر کرد که شامل ویژگی هایی بود که درنسخه استاندارد سال ۱۹۷۴ وجود نداشت و ساخت یافته ترین زبان ساخته شد که شامل END-IF، END-PERFORM، END-READ و غیره است.
کولدفیوژن (coldFusiopn) یک برنامهی خادم تجاری میتنی بر متودهای سریع توسعهی نرمافزار (به انگلیسی: RAD) است که در سال 1995 توسط جرمی و جیجی آلایر ابداع شد. مهمترین قابلیت کولدفیوژن ایناست که میتواند ارتباطی آسان بین صفحات وب (HTML) و بانک اطلاعاتی ایجاد کند.
کد نمونه
یک کد نمونه:
<cfform format="flash" method="post" width="400" height="400"> <cfinput type="text" name="username" label="Username" required="yes" > <cfinput type="password" name="password" label="Password" required="yes" > <cfinput type="submit" name="submit" value="Sign In" > </cfform>
تاریخچه
- : نگارش 1.0 آلایر کولد فیوژن عرضه شد
- : نگارش 1.5 آلایر کولد فیوژن عرضه شد
- : نگارش 2.0 آلایر کولد فیوژن عرضه شد
- : نگارش 3.0 آلایر کولد فیوژن عرضه شد
- : نگارش 3.1 آلایر کولد فیوژن عرضه شد
- : نگارش 4.0 آلایر کولد فیوژن عرضه شد- در این نسخه فاصلهی بین دو واژهی کولد و فیوژن برداشته شد.
- : نگارش 4.5 آلایر کولدفیوژن عرضه شد
- : نگارش 5.0 ماکروکدیا کولدفیوژن عرضه شد
- : نگارش 6.0 ماکروکدیا کولدفیوژن ، بهروزرسانی 1 ،2 و 3 عرضه شد
- : نگارش 7.0 ماکروکدیا کولدفیوژن امایکس عرضه شد
- : نگارش 8 ادوبی کولدفیوژن عرضه شد
- : نگارش 8.1 ادوبی کولدفیوژن عرضه شد
- : نگارش 9.0 ادوبی کولدفیوژن عرضه شد
- : نگارش 9.0.1 ادوبی کولدفیوژن عرضه شد
لیسپ یک زبان برنامهنویسی رایانه است که در سال ۱۹۵۸ به وسیلهٔ جان مککارتی ابداع شدهاست. این زبان، مانند زبان برنامهنویسی پرولوگ، بیشتر برای برنامهنویسی هوش مصنوعی مورد استفاده قرار میگیرد. با توجه به اینکه زبان لیسپ از نحو سادهای برخوردار است، تجزیه و پیادهسازی آن نسبتاً با سهولت انجام میشود.
ساختار کلی زبان لیسپ
متن برنامههای لیسپ عموماً از نمادها و لیستهایی از نمادها تشکیل میشود و بدین خاطر است که این زبان لیسپ (مخفف پردازش لیست) نامیده شدهاست. یکی از ویژگیهای جالب زبان لیسپ این است که خود برنامههای لیسپ نیز لیست هستند و بنا بر این، میتوان با برنامهها به عنوان دادهها رفتار کرد و یا دادهها را به عنوان برنامه ارزیابی نمود. لیسپ دارای گویشهای مختلفی است که بعضی از آنها دارای قابلیتهای شیءگرا نیز هستند. از این میان میتوان به کامن لیسپ اشاره کرد. در ابتدا لیسپ به عنوان علامتگذاری و نمادسازی ریاضیات و برای برنامههای کامپیوتری ابداع شد.زبان لیسپ به سرعت مورد توجه برنامه نویسان از جمله برای تحقیقات علمی هوش مصنوعی قرار گرفت.لیسپ یکی از ابتدائی زبانهای برنامه نویسی میباشد، و در علوم کامپیوتر بر بسیاری از تفکرات و ایدهها پیشگام بود.لیسپ شامل ساختمان دادهٔ درخت،مدریت نگهداری اتوماتیک،برنامه نویسی پویا،برنامه نویسی شی گرا و کامپایلر مستقل میباشد.
لیست یک مفهوم پایهای در زبان لیسپ
نام لیسپ از زبان پردازش لیسپ گرفته شدهاست. لینک لیست یکی از قسمتهای اصلی ساختمان دادهٔ زبان لیسپ است و سورس کد لیسپ از لیستها ساخته شدهاست و میتواند به عنوان ساختمان داده عمل کند.پیشرفت و توسعهٔ سیستم ماکرو به برنامه نویسان اجازه میدهد تا ترکیبهای جدید ویا حتی حیطهٔ زبانهای برنامه نویسی ویژهای را ایجاد کرده و در زبان لیسپ تعبیه کنند. قابلیت تبادل کدها و دادهها به زبان لیسپ قابلیت تشخیص ترکیبها را میدهد،همهٔ کدهای برنامه به صورت عبارتهای نمادین یا لیستهای پرانتز گذاری شده نوشته شدهاند. یک تابع میتواند توسط خودش ویا توابع دیگر فراخوانی شود ویا طبق قواعد نحوی نوشتن یک لیست و استفاده از اول نام عملگرها و پیروی کردن از قواعد آرگومانها ایجاد شود.به عنوان مثال تابع fدارای 3 آرگومان میباشد و به صورت مقابل توانائی فراخوانی را دارد و مورد استفاده قرار میگیرد:
(f x y z)
تاریخچه زبان لیسپ
زبان برنامهنویسی لیسپ توسط جان مک کارتی در سال 1958 در حالی که در مؤسسهٔ فناوری ماساچوست (MIT) بود ابداع شد.مک کارتی طرح خودش را در یک مقالهٔ مرتبط با انجمن ماشین آلات کامپیوتری در سال 1960 منتشر کرد.طرح وی در ابتدا به صورت «بخش اول:توابع بازگشتی از دید عبارتهای نمادین و محاسبهٔ آنها توسط ماشین» ارائه شد و بخش دوم آن هیچگاه منتشر نشد.وی نشان داد که با یک تعداد ساده و کمی از عملگرها و علمتگذاری توابع میتوان یک زبان تورینگ کامل برای الگوریتمها ایجاد کرد. زبان پردازش اطلاعات اولین زبان هوش مصنوعی بود. از سال 1955 یا 1956 و پیش از آن ایدههای بسیاری بر زبان لیسپ وارد شد از جمله پردازش لیست و توابع بازگشتی که در زبان لیسپ به کار برده شد. ثبتهای اصلی مک کارتی به صورت عبارتهای غیر نمادین که خواستار تفسیر کردن و برگرداندن به عبارتهای نمادین بود.به عنوان مثال عبارت غیر نمادین car[consA,B معادل عبارت نمادین (car (cons A B)بود که در زبان لیسپ به کار گرفته شده بود.برنامه نویسان به سرعت عبارت نمادین را انتخاب و عبارتهای غیر نمادین را ترک کردند. لیسپ برای اولین بار توسط استفان راسل روی یک کامپیوتر IBM 704 اجرا شد. راسل مقالهٔ مک کارسی را مطالعه کرد و دریافت که توابع لیسپ میتوانند در کد ماشین اجرا شوند. این نتیجه از مطالعه و دریافت راسل نشان میدهد که مفسر لیسپ میتوانست برای اجرای برنامههای لیسپ و ارزیابی صحیح عبارت لیسپ استفاده شود. دو زبان اسمبلی به عنوان دو عملیات اصلی و ابتدائی تجزیه و جدا کردن عناصر اصلی لیست برای IBM 704 شد.این دو زبان اسمبلی car (مضمون آدرس ثبات) و cdr (محتوای کاهش میزان ثباتها) نسخهٔ لیسپ هنوز ازcar وcdr برای عملیاتی که اولین عنصر در یک لیست و باقی ماندهٔ لیست را برمیگرداند،استفاده میکند. اولین کامپایلر تکمیل شدهٔ لیسپ،در سال 1962توسط تام هارت و مایک لوین در MIT اجرا شد، این کامپالر معرفی شده مدل لیسپ با کامپایلر نحوی در هر کامپایل و ترجمهٔ توابع میتواند به طور رایگان در هم بیامیزد. زبان به کار گرفته شده در ثبت هارت و لوین نسبت به کدهای ابتدائی مک کارتی به شیوهٔ لیسپ مدرن و جدید نزدیک تر میباشد.
پیوستن به هوش مصنوعی
بعد از شروع لیسپ ، لیسپ به انجمن تحقیقاتی هوش مصنوعی پیوست ، خصوصا به سیستمهای PDP ، زبان لیسپ به عنوان پیاده ساز طرح کوچک زبان برنامه نویسی استفاده میشود که مبنایی برای سیستم معروف هوش مصنوعی SHRLU بود. در سال 1970 تحقیقات علمی هوش مصنوعی به شاخههای تجاری انشعاب پیدا کرد که کارایی سیستم لیسپ موجود در این زمینه یک روند رو به رشد شد. لیسپ یک سیستم مشکل برای اجرا، مهارت کامپایلر و سختافزار ذخیره کننده را در سال 1970 دارا باشد. بازیابی عادی حافظه ، توسط دانشجوی فارغالتحصیل MIT ( دانیل ادوارد ) گسترش داده شده ،که برای اجرای لیسپ روی سیستمهای محاساتی ساخته شده بود اما راندمان آن هنوز یک مشکل بود. برای رهبری ماشین لیسپ: سختافزار اختصاصی برای اجرای محیط لیسپ و برنامههای آن استفاده میشود. پیشروی در هردو سختافزار کامپیوتر و فناوری کامپایلر از ماشینهای لیسپ از کار افتاده الهام گرفته شدهاست. طی شک کوشش بزرگ نسخههای بیشماری از زبان لیسپ را در یک زبان واحد متمرکز و متحد کردند(نسخههای برجسته و قابل ملاحظهای شامل: اینترلیسپ ، مک لیسپ ، متالیسپ ، و فرانزلیسپ) زبانهای جدید (لیسپ عمومی و مشترک ) در اصل یک زیر مجموعهٔ سازگاری از نسخههای تعویض شده بود. در سال 1994 ، ANSI یک لیسپ عمومی و مشترک استاندارد منتشر کرد. لیسپ عمومی و مشترک زبان برنامه نویسی فناوری اطلاعات ANSI X3.226-1994 در آن زمان فروشگاههای جهانی برای لیسپ خیلی کوچکتر از المان بود.
ترکیب و معنا شناسی
لیسپ یک عبارت جهتدار است ، برخلاف بیشتر زبانهای دیگر ، بین عبارتها و جملهها تمایز و فرقی وجود ندارد . همهٔ کدها و دادهها به عنوان عبارتها نوشته شدهاند – زمانی که یک عبارت ارزیابی میشود یک مقدار ( یا یک لیستی از مقادیر) را میسازد ، که آن هم در داخل عبارات دیگر جاسازی میشود. مقالهٔ 1958 مک کارتی دو نوع از ترکیبها را معرفی کرد: عبارت نمادین Sexps هم نامیده میشود ، که بازتابی از نمایش داخلی کدها و داده هاست و عبارت غیر نمادین هرگز مورد توجه قرار نگرفت و تقریبا همهٔ زبانها امروزه از عبارات نمادین استفاده میکنند. استفاده از پرانتزگذاریها تفاوت بسیار آشکار و مشهودی میان لیسپ و دیگر زبانهای برنامه نویسی ایجاد کردهاست . اسم مستعار LISP از Lost In Stupid Parenthese و یا Lost of Irritating Supper fluous parenthese گرفته شدهاست . هرچند ترکیب عبارتهای نمادین مسئولی برای توان لیسپ است ، این ترکیب به شدت با قاعده و منظم است. هرچند ترکیبات لیسپ به نمادگذاری قدیمی محدود نشدهاند میتواند به سبکهای دیگر توسعه پیدا کند. تکیه روی عبارتها ، قابلیت انعطاف پذیری زیادی به زبان میدهد ، زیرا توابع لیسپ به صورت لیست نوشته شدهاند ، آنها دقیقا مانند دادهها میتوانند پردازش شوند، این قابلیت اجازه میدهد برنامههای لیسپ به سادگی و راحتی نوشته شوند و به نسبت برنامههای دیگر به راحتی اداره شوند . (برنامه نویسی غیر نمادین)بسیاری از نسخههای زبان لیسپ با عناصر جدا شده توسط فاصلههای سفید و پرانتزگذاری شدهها نوشته میشود. برای مثال (1 2 f00 ) یک لیست است که عنصرهای آن سه اتم هستند ( اتم: کوچکترین عضو لیست ) : این مقادیر 1 و 2 و F00 هستند. این مقادیر ضمنا دارای نوع دادهای خاصی هستند ، مثلا این لیست دارای دو عدد صحیح 1 و 2 و یک نوع دادهٔ ویژهٔ لیسپ که یک Symbol یا نماد نامیده میشود. همچنین یک لیست خالی () به عنوان یک اتم ویژهٔ صفر و یا پوچ معرفی شدهاست. موجودیت یک لیسپ از اتم و لیست تشکیل میشود. عباتها به عنوان لیست نوشته شدهاند ، استفاده کردن از ثبتهای پیشوندی ، عناصر ابتدایی در لیست نامی از یک شکل تابع ، عملگرها ، ماکروها و یا اپراتورهای ویژهاست. آرگومانها باقیماندههایی از لیستها هستند ، برای مثال تابع list آرگومانها را به عنوان یک لیست بر میگرداند ، بنابراین عبارت (list ‘1 ‘2 ‘foo) ارزیابی میشود و حاصل این ارزیابی لیست (1,2,foo) میباشد. نیازی به ارزیابی کردن اعداد نیست چون ارزیابی عدد 1 عدد 1 میشود.آرگومانهای مثال قبل از اعداد هستند یعنی آرگومانهای ویژه که این آرگومانها از ارزیابی کردن آرگومانها جلوگیری میکنند چون مقادیر آنها مشخص است.هر عبارتی که بیان میشود قبل از اینکه با عبارات دیگر پیوست داده شود به صورت بازگشتی ارزیابی میشود. (list(1 2 (list(3 4)))) در این مثال حاصل اررزیابی به صورت لیست (1,2(3,4)) میباشد ،توجه کنید این لیست دارای 3 آرگومان میباشد ، لیستها میتوانند به صورت تو در تو باشند . اپراتورهای حسابگر به صورت همسان رفتار میکنند. حاصل عبارت (+1 2 3 4 ) عدد 10 میباشد. عبارت معادل عبارت بالا به صورت 1+2+3+4 میباشد که از نشانگذاری میان وندی استفاد شدهاست. اپراتورهای حسابگر در زبان لیسپ variadic(n-ary) که زبان لیسپ توانایی پذیرفتن هر تعداد آرگومان را داراست. عملگرهای ویژه ساختمان کنترل لیسپ را آماده میکنند. برای مثال ، اپراتور ویژه if سه آرگومان میپذیرد،اگر اولین آرگومان صفر و یا خالی باشد دومین آرگومان ارزیابی میشود و در غیر این صورت هٔرگومان سوم بررسی میشود . بنابر این if(nill(list 1 2 “foo”)(list 3 4 “bar”) که تنها آرگومان (list 3 4 “bar”) بررسی میشود.
عبارتهای لاندا (Lambda)
دیگر عبارتهای ویژه لاندا میباشد که برای وصل کردن متغیرها به مقادیرشان که درون یک عبارت ارزیابی میشوند استفاده میشود. این عملگر همچنین برای ایجاد کردن توابع هم استفاده میشود. آرگومانهای درون لاندا یک لیستی از آرگومانها هستند و عبارت ارزیابی توابع میباشند. مقادیر بازگشتی مقادیری از عبارت قبلی که ارزیابی شدهاند هستند. عبارت (Lambda(arg)(+arg1)) زمانی که این تابع به کار برده میشود به صورت یک تابع ارزیابی میشود و وظیفهٔ این تابع معرفی کردن یک آرگومان و اتصال دادن آرگومان به arg و در نهایت برگرداندن یک عدد بزرگتر از آرگومان قبلی میباشد عبارتهای لاندا خیلی متفاوت با نام تابع رفتار نمیکند بنابراین اگر در عبارت (Lambda(arg)(+arg1))5->6 عدد 5 را وارد کنیم خروجی آن 6 میشود. اتمها : در نسخهٔ اصلی لیسپ دو نوع دادهٔ ابتدایی وجود دارد: اتمها و لیستها یک لیست یک رشتهٔ منظم و محدودی از عناصر میباشد ، که هر عنصر در درون خودش یکی از این اتمها و یا لیستها را دارد و یک اتم یک عدد یا یک نماد میباشد. در اصل یک نماد یک رقم منحصر به فرد میباشدو به عنوان یک رشتهٔ عددی در سورس کد نوشته شده و هر دو به عنوان یک نام متغیر و یک رقم دادهای در پردازش نمادین استفاده میشود برای مثال list(foo(BAR 1)2) شامل سه عنصر : Symbol foo و list(BAR 1) و عدد 2 میباشد. تفاوت اصلی بین اتمها و لیستها این است که اتمها تغییر ناپذیر و منحصر به فرد میباشند. دو اتم که دقیقا به یک صورت و به یک روش در یک شی نوشته شده باشد در مکان متفاوتی در سورس کد ظاهر میشوند، هر لیست یک شی مجزا میباشد و به خاطر اینکه مستقل از دیگر لیست هاست و از دیگر لیستها به وسیلهٔ مقایسهٔ عملگرها مشخص میشود.
Consها و لیستها
یک لیست لیسپ یک لینک لیست جداست، هر ذره از این لیست یک Cons نامیده میشود و از دو اشاره گر که Car و Cdr نامیده میشوند ترکیب شدهاست این دو اشاره گر به ترتیب معادل دو فیلد Data و Next در مقالهٔ لینک لیست میباشد.
Car -> Data Cdr -> Next
بسیاری از ساختمان دادهها میتوانند ترکیبهایی از خانههای Cons را داشت باشند ، یکی از این ساختمان دادههای ابتدایی لیست مخصوص نامیده میشود ، یک لیست مخصوص هر دو نماد لیست خالی nill و یا خانهها Cons را داراستکه در هر یک از این خانهها هر اشاره گر Car به یک داده اشاره میکند (که ممکن است این اشاره گر Cons به یک لیست اشاره کند) و یک اشاره گر Cdr به یک لیست مخصوص دیگر اشاره میکند. اگر یک Cons داده به سر یک لینک لیست برده شود سپس اشاره گر Car آن به اولین عنصر از لیست و اشاره گر Cdr آن به انتهای یک لیست اشاره میکند به همین دلیل عملکرد Car و Cdr را به ترتیب first و rest هم نامیده میشود.
ارایهٔ لیست عبارت نمادین
نمایش پرانتزگذلری عبارت نمادین ساختمان لینک لیست . چندین راه برای نمایش لیست یکسان به عنوان یک عبارت نمادین وجود دارد . یک خانه (Cons ) میتواند به صورت نشان گذاری جفت نقطه گذاری شده نوشته شود به عنوان مثال (a.b) که در آن a یک Car و b یک Cdr است. یک لیست مخصوص بلند ممکن است به صورت یک نشان گذاری جفت نقطه گذاری شده نوشته شود .(a.(b.(c.(d.nill))))
طبق قرارداد کوتاه شدهٔ عبارت بالا به صورت (a b c d ) در نمادسازی لیست میباشد یک لیست مخصوص ممکن است در یک ترکیبی از دو صورت (a b c.d) نوشته شود . برای سیستمی از سه Cons که آخرین Cdr آن d است.