আমি কীভাবে গ্রাফ তৈরি করতে এবং হাসকেলের উপর তাদের কয়েকটি স্থানীয় ক্রিয়াকলাপ করা যায় তা শিখতে চাই, তবে প্রশ্নটি হাস্কেলের ক্ষেত্রে সুনির্দিষ্ট নয় এবং গ্রাফের পরিবর্তে আমরা দ্বিগুণ সংযুক্ত তালিকা বিবেচনা করতে পারি।
প্রশ্ন: দ্বিগুণ সংযুক্ত তালিকা (বা অন্যান্য দ্বিগুণ লিঙ্কযুক্ত বা বিজ্ঞপ্তি তথ্য কাঠামো) বাস্তবায়নের একটি অদ্ভুত বা প্রস্তাবিত উপায় কী হবে এবং এর উপর এমন একটি ভাষায় অপারেশন যা মূলত অপরিবর্তনীয় ডেটা স্ট্রাকচারের (হাস্কেল, ক্লোজার, ইত্যাদি) সমর্থন এবং সমর্থন করে language ? বিশেষত, স্থান দ্বারা আপডেটগুলি কীভাবে ব্যবহার করতে হবে, যা ভাষা দ্বারা আনুষ্ঠানিকভাবে নিষিদ্ধ?
আমি সহজেই কল্পনা করতে পারি যে যদি কিছু স্থানীয় অপারেশন দ্বিগুণ সংযুক্ত তালিকায় করা হয় (যদি কোনও আইটেম সন্নিবেশ করা হয়, উদাহরণস্বরূপ), ভাষার অলসতার কারণে তাত্ক্ষণিকভাবে পুরো তালিকাটি অনুলিপি করার দরকার নেই। তবে, তালিকাটি দ্বিগুণভাবে যুক্ত হওয়ার কারণে, যদি এটি এক জায়গায় পরিবর্তন করা হয় তবে তালিকার নতুন সংস্করণে পুরানো নোডগুলির কোনওটিই ব্যবহার করা যাবে না এবং সেগুলি শীঘ্রই বা পরে চিহ্নিত করা, অনুলিপি করা, আবর্জনা-সংগ্রহ করা দরকার । স্পষ্টতই এগুলি অপ্রয়োজনীয় অপারেশনগুলি হয় যদি কেবলমাত্র তালিকার আপডেট হওয়া অনুলিপি ব্যবহার করা হয় তবে তারা তালিকার আকারের সাথে একটি "ওভারহেড" আনুপাতিক যুক্ত করবে।
এর অর্থ কি এই যে এই কাজের জন্য অপরিবর্তনীয় ডেটা কেবল অনুপযুক্ত, এবং পরিবর্তনীয় ডেটার জন্য "নেটিভ" সমর্থন ব্যতীত ক্রিয়ামূলক ঘোষণামূলক ভাষাগুলি অত্যাবশ্যকীয়গুলির মতো ভাল নয়? বা, কিছু জটিল কাজ আছে?
পিএস আমি ইন্টারনেটে এই বিষয়ে কিছু নিবন্ধ এবং উপস্থাপনা খুঁজে পেয়েছি তবে সেগুলি অনুসরণ করতে খুব কষ্ট হয়েছে, আমি মনে করি যে এই প্রশ্নের উত্তরটির জন্য একাধিক অনুচ্ছেদ এবং সম্ভবত একটি ডায়াগ্রাম নেওয়া উচিত নয় ... আমি বলতে চাইছি যদি সেখানে থাকে এই সমস্যার কোনও "কার্যকরী" সমাধান নয়, উত্তরটি সম্ভবত "ইউজ সি"। যদি একটি থাকে, তবে এটি কতটা জটিল হতে পারে?
সম্পর্কিত প্রশ্নাবলী
"কার্যকরী প্রোগ্রামিংয়ে ডেটা স্ট্রাকচার" । অদক্ষ বিকল্পের পরিবর্তে ইন-প্লেস আপডেটগুলি সম্পর্কে আমার নির্দিষ্ট প্রশ্নটি সেখানে আলোচনা করা হয়নি।
"স্থায়ী ডেটা কাঠামোর অভ্যন্তরীণ পরিবর্তন" । সেখানে অনির্ধারিত ভাষায় নিম্ন-স্তরের বাস্তবায়নের উপর জোর বলে মনে হচ্ছে, অন্যদিকে আমার প্রশ্নটি কোনও ভাষার সঠিক পছন্দ (কার্যকরী বা অন্যথায়) এবং কার্যকরী ভাষায় সম্ভাব্য আইডিয়াটিক সমাধান সম্পর্কে।
প্রাসঙ্গিক উদ্ধৃতি
বিশুদ্ধভাবে কার্যকরী প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি অনেক অ্যালগরিদমকে খুব সংক্ষিপ্তভাবে প্রকাশ করার অনুমতি দেয় তবে কয়েকটি অ্যালগরিদম রয়েছে যাতে জায়গাটিতে আপডেটযোগ্য রাষ্ট্র একটি গুরুত্বপূর্ণ ভূমিকা পালন করে বলে মনে হয়। এই অ্যালগরিদমের জন্য, খাঁটি-কার্যকরী ভাষাগুলি, যাদের আপডেটযোগ্য রাষ্ট্রের অভাব রয়েছে, সেগুলি অন্তর্নিহিতভাবে অদক্ষ বলে মনে হয় ( [পন্ডার, ম্যাকগিয়ার এবং এনজি, 1988] )।
- জন লঞ্চবারি এবং সাইমন পাইটন জোন্স, অলস কার্যকরী রাষ্ট্রের থ্রেড (1994), জন লঞ্চবারি এবং সাইমন পাইটন জোন্স, হাসকেলে স্টেট (1995)। এই কাগজপত্রগুলি ST
হাস্কেলের মধ্যে মোনাডিক ধরণের নির্মাতার পরিচয় করিয়ে দেয় ।
DiffArray
টাইপ প্রয়োগ করে । এ খুঁজছি উৎস এর diffarray প্যাকেজ, আমি 91 ঘটনার দেখতে unsafePerformIO
। দেখে মনে হচ্ছে আমার প্রশ্নের উত্তরটি "হ্যাঁ, না, অপরিবর্তনীয় ডেটা বিশুদ্ধভাবে কার্যকরী ভাষাগুলি সাধারণত অস্থায়ী আপডেটগুলিতে নির্ভর করে এমন অ্যালগরিদমগুলি প্রয়োগ করার জন্য উপযুক্ত নয়"।
Map
, IntMap
অথবা HashMap
একটি সংগ্রহস্থলের) এবং নোড সংযুক্ত নোড ID- র ধারণ করা। "কম্পিউটার বিজ্ঞানের সমস্ত সমস্যা ইন্ডিয়ারেশনের অন্য স্তরের মাধ্যমে সমাধান করা যেতে পারে।"