টার্ম রাইটিং এবং প্যাটার্ন মিলের মধ্যে পার্থক্য কী?


25

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

উত্তর:


26

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

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

স্পষ্টতই উভয়ের মধ্যে ধারণাগত ওভারল্যাপ রয়েছে এবং পার্থক্যটি প্রযুক্তিগত চেয়ে ডিগ্রি ডিগ্রি পর্যন্ত। একটি প্রযুক্তিগত পার্থক্য হল যে শব্দটি rewriting (অর্থাত একটি নিয়ম নির্বিচারে প্রেক্ষিতে অধীনে এরকম সংঘটিত নতুন করে লেখা হয় সি [ σ ] সি [ R σ ] নির্বিচারে প্রেক্ষিতে জন্য সি [ ] এবং বদল σ(l,r)C[lσ]C[rσ]C[.]σ), যখন হাস্কেল, ওক্যামেল বা স্কালার মতো আধুনিক ভাষাগুলিতে প্যাটার্ন ম্যাচিং কেবল একটি পদটির 'শীর্ষে' রচনার জন্য সরবরাহ করে। আমি মনে করি, জে এর প্যাটার্ন ক্যালকুলাসে এই বিধিনিষেধ আরোপ করা হয়েছে। এই সীমাবদ্ধতার দ্বারা আমি কী বোঝাতে চাই তা আমাকে ব্যাখ্যা করুন। ওক্যামেল, হাস্কেল, স্কেলা অর্থে প্যাটার্ন মিলের সাথে আপনি এর মতো কিছু বলতে পারবেন না

match M with
   | C[ x :: _ ]  -> printf "%i ...\n" x
   | C[ [] ] -> printf "[]"

C[.]এখানে কি ? এটি এমন একটি ভেরিয়েবল হতে পারে যা এক-ওয়ালযুক্ত প্রসঙ্গের ওপরে রয়েছে। তবে ওসিএএমএল, হাস্কেল বা স্কালার মতো ভাষা প্রোগ্রামারদের ভেরিয়েবল দেয় না যা স্বেচ্ছাসেবী (এক-হোলি) প্রসঙ্গের চেয়ে বেশি, কেবলমাত্র ভেরিয়েবল যা মানগুলির চেয়ে বেশি range অন্য কথায়, এই জাতীয় ভাষায় আপনি একটি শব্দে একটি স্বেচ্ছাসেবী অবস্থানে প্যাটার্ন মেলে না। আপনার আগ্রহী অংশগুলির জন্য আপনাকে সর্বদা প্যাটার্নের মূল থেকে মূলটি নির্দিষ্ট করতে হবে I আমি এই বিধিনিষেধ আরোপের মূল কারণটি অনুমান করি যে অন্যথায় প্যাটার্নের মিলটি অ-নিরোধক হবে, কারণ কোনও শব্দটি কোনও প্যাটার্নের সাথে মেলে একাধিক উপায় উদাহরণস্বরূপ, শব্দটি দুটি উপায়ে (true, [9,7,4], "hello", 7)প্যাটার্নের C[7]সাথে মেলে , ধরে নেওয়া এই C[.] জাতীয় প্রসঙ্গে।


11

আমি তাদের সমার্থক শব্দ বলা সঠিক মনে করি না; গবেষণা এবং বাস্তবায়নের ক্ষেত্রে কিছুটা ওভারল্যাপ রয়েছে। আমি জয়ের কাজের সাথে মোটেও পরিচিত নই এবং আমি টার্ম রাইটিং সিস্টেমগুলির সাথে কিছুটা পরিচিত, তাই আমারও কিছু মিস হতে পারে।

প্যাটার্ন ম্যাচিং নিম্নলিখিত সমস্যার সাথে সম্পর্কিত: আপনার কিছু কাঠামো আছে (একটি গাছ বা একটি তালিকা বা একটি মাল্টিসেট) এবং আপনি কাঠামোটি কোনও প্যাটার্নের সাথে মেলে কিনা (বা বেশ কয়েকটি নিদর্শনগুলির মধ্যে একটি) তা পরীক্ষা করতে চান। এই প্রশ্নটি অবশ্যই টার্ম রাইটিংয়ের সাথে প্রাসঙ্গিক, কারণ টার্ম রাইটিং সিস্টেমগুলিতে শব্দটি একটি প্যাটার্নের সাথে মিলে যায় তার অর্থ এই শব্দটি একটি ভিন্ন পদে আবারও লেখা যেতে পারে, তবে এটি সমার্থক শব্দ পুনর্লিখনের নয়। (পুনর্লিখন হিসাবে প্যাটার্নের মিলের একটি সূচনা হতে পারে: "একটি শব্দ দেওয়া হয়েছে, আপনি কি এটি প্যাটার্নের সাথে মেলে আবার লিখতে পারেন?" তবে আমি এটি কখনও দেখিনি))

ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজে প্যাটার্ন ম্যাচিংয়ের ফোকাসের ক্ষেত্রে যৌক্তিক ব্যাখ্যা রয়েছে ( উদাহরণস্বরূপ কৃষ্ণস্বামী-র "প্যাটার্ন ম্যাচিংয়ে ফোকাসিং" )। অন্যদিকে, টার্ম রাইটিং সিস্টেমগুলি প্রায়শই কিছু কিছু সমীকরণীয় বৈশিষ্ট্যগুলির সাথে মডিউলগুলি মিলিয়ে থাকে যা বেশিরভাগ কার্যকরী প্রোগ্রামিং ভাষায় উপস্থিত হয় না (আপনি এমএল বা হাস্কেলের কোনও মাল্টিসেটের সাথে মেলে না) can't তবে মডিউল সমীকরণের বৈশিষ্ট্যগুলি কার্যকরী ভাষায় উপস্থিত না হওয়ার কোনও মৌলিক কারণ নেই।


1
আপনার উত্তরের জন্য ধন্যবাদ. আমি সম্মত হই যে সাধারণভাবে প্যাটার্নের মিলটি শব্দটির পুনর্লিখনের সমার্থক নয় তবে এটি আরও মূল বিষয়। তবে যদি কেউ বলে যে গণনা শক্তিযুক্ত সিস্টেমগুলি প্যাটার্ন ম্যাচিংয়ের উপর ভিত্তি করে, তবে আমি গণনা শক্তি সহ একটি টার্ম পুনর্লিখন ব্যবস্থার পার্থক্য দেখতে পাচ্ছি না। আপনি কি "একটি যৌক্তিক ব্যাখ্যা আছে" এবং "কিছু সমীকরণীয় সম্পত্তি" এর মধ্যে পার্থক্যটির আরও উদাহরণ দিয়ে যেতে পারেন?
জাকব

"আমি গণনামূলক শক্তির সাথে একটি শব্দ পুনর্লিখন পদ্ধতিতে পার্থক্যটি দেখতে পাচ্ছি না" - আমি এর অর্থ কী তা নিশ্চিত নই। মার্টিন যেমন বলেছিলেন, টার্ম রাইটিং হ'ল গণনার একটি সাধারণ মডেল, এবং প্যাটার্ন ম্যাচিং একটি বৈশিষ্ট্য, গণনার মডেল নয়।
রব সিমন্স

আপনি কি "একটি যৌক্তিক ব্যাখ্যা আছে" এবং "কিছু সমীকরণীয় সম্পত্তি" এর মধ্যে পার্থক্যটির আরও উদাহরণ দিয়ে যেতে পারেন? - কোনও ধরণের অগভীর পার্থক্য নেই - এগুলি কেবল বিভিন্ন সম্পত্তি, আপেল এবং কমলা। আমি মনে করি যে এই দুটিয়ের মধ্যে যে কোনও প্রকৃত সংযোগ হতে পারে এটি একটি গভীর গভীর গবেষণা প্রশ্ন হতে পারে! গভীর অনুমান সহ পুনর - অ্যালেসিও.ইউ.গ্লিয়িলমি.নেম / রেস / কোস - সম্ভবত উদ্দেশ্যযুক্ত।
রব সিমন্স

1

(আমি বরং এটি একটি মন্তব্য হিসাবে লিখি, তবে আমি বর্তমানে এটি করতে পারি না))

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

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

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