কোড দিয়ে গুদামের ক্রেন চালান, রঙিন ক্রেটগুলো নতুন করে সাজান, এমন কড়া নির্দেশ-সীমার মধ্যে যেখানে রিকার্শন ছাড়া উপায় নেই।
ক্রেনের নির্দেশ (বাঁয়ে ও ডানে সরা, ধরা, নামানো এবং রঙের শর্ত) দিয়ে একটি প্রোগ্রাম তৈরি করুন, যাতে ক্রেটের খোপগুলো লক্ষ্য-স্তূপে সাজানো যায়। নির্দেশের সীমা ইচ্ছে করেই কড়া রাখা হয়েছে, তাই আপনাকে Call কমান্ডের ওপর ভরসা করতে হবে, যা আপনার পুরো প্রোগ্রাম শুরু থেকে আবার চালায়; যে শর্ত ব্যর্থ হয় সেটিই হয়ে ওঠে বেস কেস, যা রিকার্শন থামায়। হাতে তৈরি দশটি স্তর আছে, একটি লাল ক্রেট থেকে ছয় ক্রেটের মিনার পর্যন্ত, আর তার আটটিই Call ছাড়া সমাধান করা যায় না।
তিনের মিনার: খোপ 1-এ তিনটি লাল ক্রেট আছে, সেগুলোকে খোপ 2-এ নিতে হবে, আর আপনি মাত্র ছয়টি নির্দেশ ব্যবহার করতে পারবেন। সব আলাদা করে লিখলে প্রতিটি ক্রেটের জন্য লাগে Grab, Right, Drop আর Left, অর্থাৎ তিন ক্রেটে এগারোটি নির্দেশ, শেষ Left বাদ দেওয়ার পরও। ছয়টি যথেষ্ট নয়।
তাই একটি যাত্রা লিখুন আর সেটিকেই পুনরাবৃত্তি করতে দিন: Grab, If-held red, Right, Drop, Left, Call। এই ছয়টি নির্দেশ। ক্রেন একটি ক্রেট ধরে, যাচাই করে যে সেটি লাল, ওপারে নিয়ে নামিয়ে রাখে, ফিরে আসে আর পুরো প্রোগ্রামকে আবার কল করে। চতুর্থ কলে খোপ 1 খালি, Grab কিছুই তোলে না, If-held red যাচাই ব্যর্থ হয়, আর প্রোগ্রাম থেমে যায়। ওই ব্যর্থ যাচাইটিই বেস কেস।
If-held red বদলে If-held blue করুন, তাহলে এই একই ছয়টি নির্দেশ চার ক্রেটের স্তর আর ছয় ক্রেটের মিনারও পার করে দেয়, কারণ রুটিনটি কখনো ক্রেট গোনে না; একটিও না থাকা পর্যন্ত সে চলতেই থাকে। রিকার্শনের মূল কথা এটাই: প্রোগ্রাম একটি ধাপ আর থামার একটি নিয়ম বর্ণনা করে, আর ইনপুট ঠিক করে দেয় সেটি কতবার চলবে।
Claw Compiler ক্রেট সাজানো ক্রেন আর চালের কড়া বাজেটের মাধ্যমে রিকার্শন শেখায়, একটি কঠিন ধারণাকে বাস্তব করে তোলে।
ক্রেনের নির্দেশগুলো, অর্থাৎ বাঁয়ে ও ডানে সরা, ধরা, নামানো আর রঙের শর্ত, একটি ন্যূনতম অ্যাসেম্বলি ভাষা, যার সঙ্গে একটি ভৌত শরীর জোড়া।
ছোট্ট এক জগতে ছোট্ট এক রোবটের মাধ্যমে প্রোগ্রামিং শেখানোর ধারা শুরু Karel the Robot থেকে, নতুনদের জন্য সেই ভাষা যা রিচার্ড প্যাটিস 1981 সালের একটি বইয়ে উপস্থাপন করেন এবং স্ট্যানফোর্ডে তাঁর কোর্সে ব্যবহার করেন। গেমগুলো ধারণাটি গ্রহণ করে: Lightbot একটি রোবটকে গোলকধাঁধার মধ্য দিয়ে প্রোগ্রাম করিয়ে লুপ আর প্রক্রিয়া শেখায়, আর Claw Compiler-এর সবচেয়ে কাছের পূর্বসূরি Cargo-Bot, 2012 সালের একটি iPad ধাঁধা, যেখানে আপনি একটি রোবটকে ক্রেট সরাতে শেখান। Two Lives Left এটি রুই ভিয়ানার সঙ্গে, তাঁর প্রোটোটাইপ থেকে, নিজেদের iPad কোডিং অ্যাপ Codea-তে তৈরি করে, এবং একে সম্পূর্ণভাবে iPad-এ প্রোগ্রাম করা প্রথম গেম হিসেবে প্রচার করে।
কাজটি, অর্থাৎ ক্রেটের খোপগুলোকে লক্ষ্য-স্তূপে সাজানো, এমন এক যন্ত্রের করা বাছাই যা একসঙ্গে ঠিক একটি জিনিসই ধরতে পারে। একটিমাত্র গ্রিপারের এই সীমাবদ্ধতা নিজেই একটি শিক্ষা। একটি রেজিস্টার ঠিক এই বাধাই আরোপ করে, আর এ কারণেই আসল বাছাইয়ে জিনিস নামিয়ে রাখার কোনো জায়গা লাগে; একটি বাড়তি খোপ দরকার, এটা আবিষ্কার করা মানে অস্থায়ী সংরক্ষণের ধারণাটি আবিষ্কার করা।
Call সবসময় শেষ নির্দেশ বলে এখানকার প্রতিটি প্রোগ্রাম টেল-রিকার্সিভ: নিজেকে কল করাই তার শেষ কাজ। অনেক ভাষার বাস্তবায়ন টেল কলকে শুরুতে ফিরে যাওয়ার একটি সাধারণ লাফে বদলে দেয়, তাই একই প্রোগ্রামকে রিকার্শন হিসেবেও পড়া যায়, লুপ হিসেবেও। দুটো যে একই ধারণা, তা বোঝা রিকার্শন বোঝার একটা বড় অংশ।
Claw Compiler হলো PlayPendium-এর জন্য তৈরি একটি মৌলিক, বিনামূল্যের ব্রাউজার গেম: সাত নির্দেশের একটি ক্রেন-ভাষা, দশটি স্তর যাদের সীমা রিকার্শনকে ঐচ্ছিক নয় বরং অপরিহার্য করে তোলে, সবার জন্য একই দৈনিক স্তর, আর একটি অনুশীলন মোড যা বাকি স্তরগুলো দেয়।