লিসপ ম্যাক্রোগুলির সাধারণ অ্যাপ্লিকেশনগুলি কী কী?


19

আমি কিছু এলআইএসপি শিখার চেষ্টা করছি এবং এলআইএসপি ম্যাক্রোগুলির গুরুত্ব সম্পর্কে আমি অনেক কিছু পড়েছি তাই আমি তাদের সাথে কিছু কাজের অভিজ্ঞতা পেতে চাই।

আপনি কি এমন ব্যবহারিক অ্যাপ্লিকেশন ক্ষেত্রের পরামর্শ দিতে পারেন যা আমাকে বাস্তব-বিশ্ব সমস্যা সমাধানের জন্য ম্যাক্রোগুলি ব্যবহার করার অনুমতি দিতে এবং এই প্রোগ্রামিং কনস্ট্রাক্টের কার্যকারিতা বোঝার অনুমতি দেয়?

বিঃদ্রঃ

এটি পরবর্তী প্রশ্নটি আমার কী প্রকল্পে করা উচিত তা জেনেরিক নয় । আমি বুঝতে আগ্রহী যে সাধারণত এলআইএসপি ম্যাক্রোগুলির মাধ্যমে কোন ধরণের সমস্যাগুলি সমাধান করা হয়। উদাহরণস্বরূপ, তারা বিমূর্ত ডেটা ধরণের প্রয়োগের জন্য ভাল? কেন এই নির্মাণটি ভাষার সাথে যুক্ত হয়েছিল? এটি কোন ধরণের সমস্যাগুলি সমাধান করে যা সাধারণ ফাংশনগুলির মাধ্যমে সমাধান করা যায় না?


উত্তর:


9

লিস্প ম্যাক্রোগুলি কয়েকটি স্বতন্ত্র বৈশিষ্ট্যগুলিকে একত্রিত করে:

  1. ম্যাক্রোস নতুন সিনট্যাক্স সংজ্ঞায়িত করে ↔ তারা উত্স-কোডটিকে ইনপুট হিসাবে ব্যবহার করে
  2. ম্যাক্রোগুলি সাধারণত সংকলন সময়ে চালিত হয়
  3. ম্যাক্রোজ উত্স-কোড উত্পন্ন করে

সেরা অ্যাপ্লিকেশনগুলি সেই সমস্ত দিক ব্যবহার করে। সম্ভবত সর্বাধিক পরিচিত উদাহরণটি কমন লিস্পের (লুপ…) , those বৈশিষ্ট্যগুলির মধ্যে একটি ছাড়া এটি এর উপযোগিতার কাছাকাছি কোথাও হবে না। উত্স হিসাবে ইনপুট হিসাবে এটি লুপ ভিতরে ক্রিয়া সংজ্ঞায়িত করা বিশ্রী হবে; সংকলন-সময় সম্প্রসারণ ছাড়া এটি উপায় খুব ধীর হবে; এবং কোড-প্রজন্ম ছাড়া এটি কার্যকর করা যায় না।

আর একটি সূক্ষ্ম উদাহরণ হ'ল প্রাক্টিকাল কমন লিস্পের বাইনারি সিরিয়ালাইজেশন অধ্যায় , ব্যবহারিক: বাইনারি ফাইলগুলি পার্সিং করা

লিনকিউ-র অনুরূপ কিছু কার্যকর করে এমন একটি কোয়েরি ম্যাক্রো হতে পারে অন্য একটি ভাল অ্যাপ্লিকেশন। তবে এটি অটোর সমাপ্তি অনুপস্থিত যা লিনকিউকে যতটা সুন্দর করে তোলে। এক্সএমএল ইনপুট (যেমন এক্সএএমএলএল) দ্বারা বিশেষ উদ্দেশ্যে কোড-জেনারেটর দ্বারা আজ সমাধান করা প্রায় সমস্ত কিছুই লিস্প ম্যাক্রো ব্যবহার করে প্রয়োগ করা যেতে পারে।


আমি স্রেফ "প্রাক্টিক্যাল কমন লিস্প" বইটি কিনেছি, আপনি যে উদাহরণটি প্রস্তাব করেছেন তার উপরে আমার নজর থাকবে।
জর্জিও

2

আমি সাধারণ লিস্পে ম্যাক্রোগুলি সম্পর্কে যেভাবে ভাবতে চাই তা হ'ল এগুলি হ'ল ফাংশনগুলি যা মূল্যায়ন করার জন্য কোড রিটার্ন করে, তবে সেই কোডটি ফেরত দেওয়ার আগে তাদের যুক্তিগুলির মূল্যায়ন 'না' করে। ফাংশনগুলিও কিছু ফিরিয়ে দেয় তবে তারা তাদের শরীরের মূল্যায়ন করার আগে প্রতিটি তর্ককে মূল্যায়ন করে। ম্যাক্রোস না।

পল গ্রাহাম 'অন লিস্প'-এ (আইএমএইচও) ম্যাক্রো এবং ফাংশনগুলির মধ্যে পার্থক্যের একটি সেরা বর্ণনা প্রদান করে এবং তাদের ওভারল্যাপ এবং স্বতন্ত্রতা নিয়ে আলোচনা করে। কোডের অনেকগুলি বিট ফাংশন বা ম্যাক্রো হিসাবে লেখা যেতে পারে তবে এমন কিছু ঘটনা রয়েছে যেখানে কেবলমাত্র একটি ম্যাক্রো কাজ করবে। একবার আপনি এই চারপাশে আপনার মাথা গুটিয়ে ফেললে, আমি মনে করি আপনি লিস্পে ম্যাক্রোগুলির সংক্ষেপ পেয়েছেন।

কোনও ম্যাক্রোর উদাহরণ হিসাবে যেখানে কোনও ফাংশন কাজ করবে না, সেখানে 'আইআইএফ' (যদি অ্যানাফোরিক হয়) দেখুন। এটি কোডের কয়েকটি লাইন এবং কোথায় শুরু করতে হবে সে সম্পর্কে আমার প্রস্তাব।

এবং কমন লিস্পের অ্যানাফোরিকের সংস্করণটি উল্লেখ করুন যদি এটি উদ্দেশ্যমূলক পরিবর্তনশীল ক্যাপচারের সুবিধা নেয়। স্কিমের স্বয়ংক্রিয়ভাবে হাইজিনিক সংস্করণ আইএমও 'আসল চুক্তি' নয়। পরিবর্তনশীল ক্যাপচার লিস্প ম্যাক্রোলজির একটি গুরুত্বপূর্ণ অংশ এবং আরও কিছু শক্তিশালী এবং দরকারী ম্যাক্রো অবশ্যই এর সদ্ব্যবহার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.