বড় ফাংশনাল প্রোগ্রামগুলি বিশেষত হাস্কেলের ডিজাইন / কাঠামো গঠনের একটি ভাল উপায় কী?
আমি বেশ কয়েকটি টিউটোরিয়াল দিয়েছি (রিয়েল ওয়ার্ল্ড হাসেল একটি নিকটে দ্বিতীয় সহ নিজেকেই একটি প্রকল্প লিখুন) - তবে বেশিরভাগ প্রোগ্রাম অপেক্ষাকৃত ছোট এবং একক উদ্দেশ্যমূলক। অতিরিক্তভাবে, আমি তাদের কয়েকটিকে বিশেষভাবে মার্জিত হিসাবে বিবেচনা করি না (উদাহরণস্বরূপ, ডাব্লুওয়াইএসে বিশাল সন্ধানের সারণী)।
আমি এখন আরও চলমান অংশ সহ আরও বৃহত্তর প্রোগ্রামগুলি লিখতে চাই - বিভিন্ন উত্স থেকে বিভিন্ন তথ্য উপার্জন, এটি পরিষ্কার করা, এটি বিভিন্ন উপায়ে প্রক্রিয়াজাতকরণ, এটি ইউজার ইন্টারফেসে প্রদর্শন করা, চালিয়ে যাওয়া, নেটওয়ার্কগুলির মাধ্যমে যোগাযোগ করা ইত্যাদি ইত্যাদি কীভাবে পারে? একটি সর্বোত্তম কাঠামো এই জাতীয় কোডটি পরিবর্তনযোগ্য প্রয়োজনের সাথে মানযোগ্য, রক্ষণাবেক্ষণযোগ্য এবং অভিযোজ্য হতে পারে?
বৃহত্তর অবজেক্ট-ভিত্তিক অত্যাবশ্যক প্রোগ্রামগুলির জন্য এই প্রশ্নগুলিকে সম্বোধন করার জন্য যথেষ্ট বড় একটি সাহিত্য রয়েছে। এমভিসি, নকশার প্যাটার্ন ইত্যাদির মতো আইডিয়াগুলি ও ও স্টাইলে উদ্বেগের পৃথকীকরণ এবং পুনঃব্যবহারযোগ্যতার মতো বিস্তৃত লক্ষ্যগুলি উপলব্ধি করার জন্য সুনির্দিষ্ট প্রেসক্রিপশন। অধিকন্তু, নতুন জোরালো ভাষাগুলি নিজেকে 'বাড়ার সাথে সাথে ডিজাইনের' শৈলীর পুনঃনির্মাণের শৈলীতে ndণ দেয় যা আমার অবিশ্বাস্য মতে হাস্কেল কম কম উপযুক্ত বলে মনে হয়।
হাস্কেলের জন্য কি সমমানের সাহিত্য আছে? বিদেশী নিয়ন্ত্রণ কাঠামোর চিড়িয়াখানা কীভাবে কার্যকরী প্রোগ্রামিংয়ে উপলব্ধ (মনড, তীর, প্রয়োগমূলক ইত্যাদি) এই উদ্দেশ্যে সর্বাধিক নিযুক্ত হয়? আপনি কোন সেরা অনুশীলনের সুপারিশ করতে পারেন?
ধন্যবাদ!
সম্পাদনা (এটি ডন স্টুয়ার্টের উত্তরের অনুসরণ):
@ ডনস উল্লেখ করেছেন: "মনডগুলি মূল স্থাপত্য নকশাগুলি ক্যাপচার করে" "
আমার অনুমান আমার প্রশ্ন: খাঁটি কার্যকরী ভাষায় কী কী মূল স্থাপত্য নকশাগুলি সম্পর্কে ভাবা উচিত?
বেশ কয়েকটি ডেটা স্ট্রিম এবং বিভিন্ন প্রক্রিয়াজাতকরণের উদাহরণ বিবেচনা করুন। আমি ডেটা স্ট্রিমের জন্য ডেটা স্ট্রিমের সেটগুলিতে মডুলার পার্সার লিখতে পারি এবং প্রতিটি প্রসেসিং স্টেপকে খাঁটি ফাংশন হিসাবে প্রয়োগ করতে পারি। এক টুকরো ডেটার জন্য প্রয়োজনীয় প্রক্রিয়াকরণ পদক্ষেপগুলি এর মান এবং অন্যদের উপর নির্ভর করবে। কিছু পদক্ষেপগুলি GUI আপডেট বা ডাটাবেস কোয়েরির মতো পার্শ্ব প্রতিক্রিয়া অনুসরণ করা উচিত।
একটি দুর্দান্ত উপায়ে ডেটা এবং পার্সিং স্টেপগুলি বেঁধে রাখার 'ডান' উপায় কী? এক একটি বড় ফাংশন লিখতে পারে যা বিভিন্ন ডেটা ধরণের জন্য সঠিক কাজ করে। অথবা কেউ এখন পর্যন্ত কীভাবে প্রক্রিয়াজাত হয়েছে তা ট্র্যাক রাখতে একটি মোনাড ব্যবহার করতে পারে এবং প্রতিটি প্রসেসিং পদক্ষেপটি মোনাডের রাজ্য থেকে পরবর্তী যা প্রয়োজন তা পেতে পারে। অথবা যে কেউ পৃথক পৃথক প্রোগ্রাম লিখতে পারে এবং চারপাশে বার্তা প্রেরণ করতে পারে (আমি এই বিকল্পটি পছন্দ করি না)।
তিনি যে স্লাইডগুলি সংযুক্ত করেছেন সেগুলির একটি জিনিস রয়েছে যা আমাদের বুলেট দরকার: "প্রকার / ফাংশন / শ্রেণি / মনডে নকশা ম্যাপ করার জন্য আইডিয়ামস"। মূর্খতা কি? :)