উত্তর:
র্যাকেটটি চূড়ান্তভাবে R5RS এর উপর ভিত্তি করে তৈরি করা হয়, এবং আর 6 আরএস নয় এবং উভয়েরই কঠোর সুপারসেট নয়। আমার মনে হয় না যে এটিকে 'স্কিম' বলা যেতে পারে কারণ এটি কোনও স্কিম স্ট্যান্ডার্ডের সাথে পিছনে সামঞ্জস্যপূর্ণ নয়।
বেশিরভাগ বাস্তবায়নগুলি এক্সটেনশানগুলি সরবরাহ করে, তবে অন্যথায় পিছনে সামঞ্জস্যপূর্ণ, অবশ্যই, র্যাকেটের সাথে আসা সংকলকটি আর 5 আরএস বা আর 6 আরএস মোডেও চলতে পারে। র্যাকেট মোডে চলমান বৈধ আর 5 / 6আরএস স্কিমটি প্রত্যাখাত হতে পারে, রানটাইম ত্রুটির কারণ হতে পারে বা এর চেয়ে আলাদা আচরণ করতে পারে। এই বলে যে, প্রধান পয়েন্টগুলি যেখানে এটি পিছনে সামঞ্জস্যপূর্ণ নয়:
set-cdr!
এবং নেই set-car!
, set-mcar!
যা কেবলমাত্র পরিবর্তিত হিসাবে তৈরি বিশেষত জোড়াগুলিতে কাজ করে।letrec
তাকে আর letrec*
-6আরএস বলা হয় এবং আর 5 আরএস-তে বিদ্যমান নেই, যা র্যাকেটে আর 5 আরএস এবং আর 6 আরএস কল letrec
বিদ্যমান নেই।( ... )
এবং [ ... ]
সমতুল্য, আর 5 আরএস করে না, তবে আর 6 আরএস করে।সম্ভবত আরও রয়েছে, তবে বেশিরভাগ অংশে র্যাকেট হল স্কিমের সুপারস্টেট।
()
নিজেকে মূল্যায়ন করার বিষয়টি বিবেচনা করছে বলে মনে হচ্ছে , আমি সেটার সাথে বিভ্রান্ত ছিলাম। ()
যদিও স্কিমটিতে স্ব-মূল্যায়ন করা হচ্ছে না তা বাস্তবে আমি কখনই পাইনি যদিও এটি প্রচলিত লিস্পে রয়েছে।
#%app
, যদিও:#lang racket (require (rename-in racket [#%app old])) (define-syntax #%app (syntax-rules () [(_) '()] [(_ . rest) (old . rest)])) (null? ()) ;; => #t
এটিতে পরিবর্তন হিসাবে তালিকাগুলি রয়েছে। এটিতে একটি স্ট্রাকচার সিস্টেম রয়েছে যা আর 6 আরএস রেকর্ড সিস্টেমের চেয়ে কিছুটা পরিষ্কার। এটিতে একটি অবজেক্ট ওরিয়েন্টেড ক্লাস এবং অবজেক্ট সিস্টেম রয়েছে। এটি চুক্তি অনুসারে ডিজাইনের জন্য স্থানীয় সমর্থন রয়েছে। এটিতে একটি ইউনিট সিস্টেম রয়েছে যা এমএল মডিউল সিস্টেমের সাথে স্মরণ করিয়ে দেয়, পাশাপাশি একটি মডিউল সিস্টেমও অনেকটা R6RS মডিউল সিস্টেমের মতো। আমি নিশ্চিত যে আমি উল্লেখ করেছি যতগুলি জিনিস ভুলে গেছি।
আমি নিশ্চিত নই যে নাম পরিবর্তনটি বিপণন চালাকি ছাড়া অন্য যে কোনও কিছু হিসাবে কার্যকর ছিল তবে র্যাকেট অবশ্যই স্কিমের একটি স্বতন্ত্র উপভাষা।
পিএলটি স্কিম থেকে র্যাকেটে নাম পরিবর্তনের যৌক্তিকতাটি র্যাকেট সাইটে আলোচনা করা হয়েছে ।
প্রকল্পের প্রোগ্রামিং ল্যাঙ্গুয়েজে ভাষার স্পেসিফিকেশন আর 5 আরএস একাধিক স্কিম বাস্তবায়নকারীদের মধ্যে সম্মতির ভিত্তিতে। এটি বোঝায় যে ভাষাটি খুব স্থিতিশীল। এটি আরও বোঝায় যে অনেক দরকারী বৈশিষ্ট্যগুলি আর 5 আরএস স্ট্যান্ডার্ডের অংশ নয়।
র্যাকেট আর 5 আরএস তৈরি করেছে এবং এটিকে প্রসারিত করেছে। কিছু এক্সটেনশন ম্যাক্রো হিসাবে সংজ্ঞায়িত করা হয়, তবে কিছু বৈশিষ্ট্যের জন্য রানটাইম সিস্টেমের সমর্থন প্রয়োজন।
র্যাকেটের বৈশিষ্ট্যগুলি কেবল ম্যাক্রো দ্বারা কার্যকর করা যায় না:
মডিউল এবং ম্যাক্রো সিস্টেম আরএনআরএস নির্দিষ্টকরণের চেয়ে অনেক বেশি সাধারণ। এক সাথে #lang
পাঠক / ভাষার স্পেসিফিকেশন কাস্টম ভাষা (কাস্টম সিনট্যাক্স সহ) সংজ্ঞায়িত করা এবং এটিকে সাধারণ র্যাকেট প্রোগ্রামগুলির সাথে ব্যবহার করা সম্ভব করে তোলে।
কয়েকটি ক্ষেত্রে র্যাকেটের এমন রচনা রয়েছে যার আচরণগুলি R5RS থেকে বিচ্যুত হয়। সর্বাধিক সুস্পষ্ট একটি cons
একটি অপরিবর্তনীয় জুটি ( mcons
একটি পরিবর্তনীয় জুটি তৈরি করে) তৈরি করছে। অপরিবর্তনীয় জোড়া থাকার একটি সুবিধা হ'ল length
এখন হে (1) মোড়িত সময়ে চালিত হয়।
র্যাকেটে "ম্যাচ" এর মতো আর -6 আরএস স্কিমের অন্তর্ভুক্ত নয় এমন অনেকগুলি দুর্দান্ত ভাষা নির্মাণ রয়েছে ।
match
খুব সুন্দর তবে ভাগ্যক্রমে এটি কেবল একটি ম্যাক্রো যাতে এটি লিপসে সহজেই যুক্ত করা যায় যা এটি নেই। কমন লিস্প এর মাধ্যমে তালিকার সাথে হালকা প্যাটার্ন ম্যাচিং করতে পারে destructuring-bind
। এর destructuring-case
উপর ভিত্তি করে ম্যাক্রো লেখা সহজ , এবং অনেকেরই রয়েছে। স্কিমের জন্য পোর্টেবল match
লাইব্রেরি রয়েছে। ক্লোজার আছে core.match
।
()
অবৈধ, স্ব-মূল্যায়ন নয়। এছাড়াও, কোলাহল করে আরো সীমাবদ্ধ করেছেনletrec
- উদাহরণস্বরূপ, একr5rs
ভাষা; এটিletrec*
ডিফল্ট ভাষায় পছন্দ মত সংস্করণ ব্যবহার করার জন্য ইচ্ছাকৃত পছন্দ ।