ক্লোজুরে হাইজেনিক ম্যাক্রোর অভাব থেকে কোন ব্যবহারিক সমস্যার ফলস্বরূপ?


11

শুনেছি ক্লোজুরে ম্যাক্রোগুলি লিখতে সহজ তবে র্যাকেটের হাইজিয়েনিক ম্যাক্রোগুলির মতো নির্ভরযোগ্য নয়। আমার প্রশ্নের 2 অংশ রয়েছে:

  1. gensymহাইজেনিক ম্যাক্রো থেকে আলাদা কীভাবে ?
  2. র‌্যাকেট ম্যাক্রো ক্লোজারের কী সরবরাহ করে না? (সেফটি, ভারসাম্যহীনতা বা যে কোনও কিছু হোক)

2
হাইজেনিক ম্যাক্রো হ'ল ম্যাক্রো যার প্রসারণটি শনাক্তকারীদের দুর্ঘটনাজনিত ক্যাপচারের কারণ না হওয়ার গ্যারান্টিযুক্ত। হাইজিয়েনিক ম্যাক্রোগুলির প্রবর্তনের পূর্বে দুর্ঘটনাজনিত ক্যাপচারের সাধারণ সমস্যাটি লিস্প সম্প্রদায়ের মধ্যে ভালভাবেই জানা ছিল। ম্যাক্রো লেখকরা ভাষা বৈশিষ্ট্যগুলি ব্যবহার করবেন যা অনন্য সনাক্তকারী তৈরি করবে (উদাহরণস্বরূপ, জিনসিম) বা সমস্যাটি এড়ানোর জন্য অবহেলিত শনাক্তকারীদের ব্যবহার করবে। হাইজেনিক ম্যাক্রো হ'ল ম্যাক্রো এক্সপেন্ডারের মধ্যে সংহত হওয়া ক্যাপচার সমস্যার একটি প্রোগ্রামেটিক সমাধান। en.wikedia.org/wiki/Hygienic_macro
রবার্ট হার্ভে

3
কারণ [র‌্যাকেটের] হাইজিয়েনিক ম্যাক্রো সিস্টেমটি আপনার ম্যাক্রো কীভাবে কাজ করে তার গভীর জ্ঞান রয়েছে, আপনার ম্যাক্রো পরিবেশের সাথে অত্যন্ত সুসংহত হয়েছে: বাক্য গঠনটি সঠিকভাবে কাজ করে, স্বয়ংক্রিয় পরিবর্তনশীল নাম পরিবর্তন করে সঠিকভাবে কাজ করে, ক্রস-রেফারেন্সিং সঠিকভাবে কাজ করে এবং অন্য সমস্তগুলি এইভাবে কাজ করে স্লিক [র‌্যাকেট] আইডিই বৈশিষ্ট্য। অন্য কথায়, স্বাস্থ্যকরন কেবল ভেরিয়েবল ক্যাপচারের মতো সরল বাগগুলির বিরুদ্ধে আপনাকে রক্ষা করে না — এটি আপনার কোডটিকে আনুষ্ঠানিকভাবে এমন সরঞ্জামগুলির দ্বারা বিশ্লেষণ করতে দেয় যা সাধারণ এলআইএসপি-র জন্য সহজভাবে উপস্থিত থাকতে পারে না। randomhacks.net/2002/09/13/hygienic-macros
রবার্ট হার্ভে

উত্তর:


6

হাইজিয়েনিক ম্যাক্রোগুলির সুবিধা ভাষার সামর্থ্যের মধ্যে একটি নয় - আপনি gensymসঠিক সময়ে স্বাস্থ্যকর ব্যবহার এবং যত্ন সহকারে উদ্ধৃতি / উদ্ধৃতি সঠিক সময়ে ম্যাক্রোগুলি লিখতে পারেন । তবে হাইজিয়েনিক ম্যাক্রোগুলি নিশ্চিত করে যে আপনার ম্যাক্রোগুলির ভাল স্বাস্থ্য রয়েছে। এই সম্মানের ক্ষেত্রে এটি কিছুটা টাইপ-চেকিংয়ের মতো।

হাইজেনিক ম্যাক্রোগুলির সরঞ্জামদানের সুবিধাও থাকতে পারে। বেশিরভাগ হাইজেনিক ম্যাক্রো সিস্টেমগুলি আপনার ম্যাক্রো কী করে এবং এটি কীভাবে করে তার উপর কঠোর নিয়ন্ত্রণ আরোপ করে (উদাহরণস্বরূপ, যখন স্কিমের দ্বারা নির্ধারিত ম্যাক্রো syntax-caseপ্রসারিত হয় তখন আপনি স্বেচ্ছাচারিত কোড কার্যকর করতে পারবেন না )। এটি আপনার ম্যাক্রোগুলিকে "বোঝে" এবং অতিরিক্ত টুলিং সমর্থন সরবরাহ করতে পারে এমন প্রোগ্রামগুলি লিখতে এটি আরও সহজ করে তুলতে পারে।

অন্যদিকে, কিছু ক্ষেত্রে রয়েছে যেখানে অস্বাস্থ্যকর ম্যাক্রোগুলি কার্যকর হতে পারে। উদাহরণস্বরূপ, আপনি যদি কোনও নির্দিষ্ট ভেরিয়েবলের (উদাহরণস্বরূপ, অ্যানোফোরিক ম্যাক্রোগুলি ) জন্য বাঁধাই করতে চান তবে আমি মনে করি আপনার যদি ভাগ্যবান ম্যাক্রোগুলি না থাকে তবে আপনি ভাগ্যের বাইরে।


2
gensymম্যাক্রোটিকে ম্যাক্রো ব্যবহারকারীর সাথে দুর্ঘটনাক্রমে জবাবদিহি করতে বাধা দেয়, তবে ম্যাক্রো ব্যবহারকারীকে ম্যাক্রোর সাথে বিশৃঙ্খলা থেকে বাধা দেয় না। উদাহরণস্বরূপ, ম্যাক্রো ব্যবহারকারী পুনরায় সংজ্ঞা দিতে পারেন ifবা এর মতো কিছু। ("কেন কেউ কেউ এটি করবে" এই প্রশ্নটি অপ্রাসঙ্গিক This এটি একটি সহজ উদাহরণ যা প্রমাণ করে যে এটি সম্ভব, এবং অ-হাইজিয়েনিক ম্যাক্রোগুলি সম্পর্কে যুক্তি দেখানো কঠিন)
ফিল

2
স্বাস্থ্যকর ম্যাক্রোগুলি অবশ্যই কার্যকর। আমি স্কিম সম্পর্কে নিশ্চিত নই, তবে র‌্যাকেটে প্রচুর "হাইজিন-বেন্ডিং" অপারেশন রয়েছে। ভাষার ম্যাক্রোগুলি ডিফল্টরূপে স্বাস্থ্যকর are আপনি যখন স্বাস্থ্যবিধি ভঙ্গ করেন তখন এগুলি আপনাকে খুব সচেতন করে তোলে।
ফিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.