এমটিএল, ট্রান্সফর্মারস, মোনাডস-এফডি, মোনাডলিব এবং পছন্দের প্যারাডক্স


91

হ্যাকেজের মনড ট্রান্সফর্মারগুলির জন্য বেশ কয়েকটি প্যাকেজ রয়েছে:

  • এমটিএল : মোনাড ট্রান্সফর্মার লাইব্রেরি
  • ট্রান্সফরমার : কংক্রিট ফান্টেক্টর এবং মোনাড ট্রান্সফরমার
  • monads-fd : কার্যকরী নির্ভরতা ব্যবহার করে Monad ক্লাস
  • monads-tf : টাইপ পরিবার ব্যবহার করে Monad ক্লাস
  • monadLib : মনাদ ট্রান্সফর্মারগুলির একটি সংকলন।
  • এমটিএল-টিএফ : টাইপ পরিবার ব্যবহার করে মোনাড ট্রান্সফর্মার লাইব্রেরি।
  • মিমিটিএল : মডুলার মোনাড ট্রান্সফর্মার লাইব্রেরি
  • এমটিএলএক্স : টাইপ ইনডেক্স সহ মোনাড ট্রান্সফর্মার লাইব্রেরি, 'ফ্রি' অনুলিপি সরবরাহ করে।
  • কম্পোজ-ট্রান্স : কম্পোজেবল মোনাড ট্রান্সফর্মার

(এবং সম্ভবত আমি কিছু মিস করেছি)

আমরা কোনটি ব্যবহার করব?

হাসটেল প্ল্যাটফর্মের মধ্যে এমটিএল হ'ল, তবে আমি reddit এ শুনছি যে এটি অসাধারণ।

তবে যাই হোক না কেন পছন্দ সম্পর্কে খারাপ, এটি কি কেবল একটি ভাল জিনিস নয়?

ঠিক আছে, আমি দেখেছি যে উদাহরণস্বরূপ ডেটা-অ্যাকসেসরের লেখককে কেবলমাত্র জনপ্রিয় পছন্দগুলি পূরণ করতে এই সমস্ত করতে হয়েছিল:

  • ডেটা-অ্যাকসেসর-মোনাডলিব লাইব্রেরি: মোনাডলিবের সোনাদের জন্য অ্যাকসেসর ফাংশন
  • ডেটা-অ্যাকসেসর-মোনাডস-এফডি লাইব্রেরি: মোনাডস-এফডি স্টেট মোনাড ক্লাসে অ্যাক্সেসর ব্যবহার করুন state
  • ডেটা-অ্যাকসেসর-মোনাদস-টিএফ লাইব্রেরি: মোনাড-টিফের স্টেট মোনাদ টাইপ পরিবারে অ্যাক্সেসর ব্যবহার করুন
  • ডেটা-অ্যাকসেসর-এমটিএল লাইব্রেরি: এমটিএল রাজ্য মোনাড শ্রেণিতে রাজ্য অ্যাক্সেস করতে অ্যাকসেসর ব্যবহার করুন
  • ডেটা-অ্যাকসেসর-ট্রান্সফরমার লাইব্রেরি: ট্রান্সফর্মারগুলিতে স্টেট অ্যাক্সেস করতে অ্যাকসেসর ব্যবহার করুন স্টেট মোনাড

আমি কল্পনা করি যে এটি যদি চলতে থাকে এবং উদাহরণস্বরূপ বেশ কয়েকটি প্রতিযোগিতামূলক তীরের প্যাকেজগুলি বিকশিত হয়, তবে আমরা সম্ভবত এর মতো কিছু দেখতে পাচ্ছি: স্পুনক্লিংক-তীর-ট্রান্সফর্মার, চামচকোলাঙ্ক-তীর-ট্রান্সফর্মার, চামচিকঙ্কা - টিফরোজ-মোনাডলিব, ...

এবং তারপরে আমি চিন্তিত যে যদি চামচিক লিঙ্কটি কাঁটাচামচ হয়ে যায় তবে হ্যাকেজ ডিস্কের স্থান ছাড়িয়ে যাবে। :)

প্রশ্নসমূহ:

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

4
এই লিঙ্কটি আমাকে mtl বনাম ট্রান্সফর্মারগুলি haskell.org/haskellwiki/
ব্র্যান্ডন কুক

4
@ জবেরিমন মন্তব্যের জন্য নিচে স্ক্রোল করুন ! এমটিএল বা ট্রান্সফর্মার ব্যবহার করুন, তারা সামঞ্জস্যপূর্ণ হয়ে উঠেছে!
সোফি

উত্তর:


70

তাদের একগুচ্ছ প্রায় সম্পূর্ণ সমতুল্য:

  • mtlজিএইচসি এক্সটেনশন ব্যবহার করে তবে transformersহাস্কেল 98 98
  • monads-fdএবং যথাক্রমে ফাংশনাল নির্ভরতা এবং টাইপ পরিবারগুলি ব্যবহার করে monads-tfঅ্যাড-অনস রয়েছে যা transformersউভয়ই mtlযেটি থেকে অনুপস্থিত রয়েছে তার কার্যকারিতা সরবরাহ করে transformers
  • mtl-tfহয় mtlটাইপ পরিবার ব্যবহার reimplemented।

তাই মূলত, mtl== transformers++ monads-fd, mtl-tf== transformers++ monads-tf। আমার মনে হয় transformersএবং এর সাথে সম্পর্কিত প্যাকেজগুলির উন্নত পোর্টেবিলিটি এবং মড্যুলারিটি mtlহ'ল এই দিনগুলিতে কেন অসাধারণ,

mmtlএবং mtlxউভয়ই mtlএপিআই পার্থক্য এবং অতিরিক্ত বৈশিষ্ট্যগুলির সাথে মিলিয়ে এবং / অথবা এর উপর ভিত্তি করে বলে মনে হচ্ছে ।

MonadLibবিষয়গুলির তুলনায় আলাদা আলাদা ধারণা আছে বলে মনে হয় তবে আমি এটির সাথে সরাসরি পরিচিত নই। এছাড়াও অন্যান্যগুলির তুলনায় অনেকগুলি GHC এক্সটেনশান ব্যবহার করা হয় বলে মনে হয়।

এক নজরে compose-transমনে হয় মোনাড ট্রান্সফর্মার তৈরির জন্য রূপক স্টাফের মতো হবে। এটি কোনটির সাথে সামঞ্জস্যপূর্ণ বলে দাবি করেছে Control.Monad.Trans... আমার ধারণা এর মানে mtl?

যে কোনও হারে, আমি নিম্নলিখিত সিদ্ধান্তের অ্যালগরিদমটি পরামর্শ দেব:

  • নতুন প্রকল্পের জন্য আপনার কি স্ট্যান্ডার্ড মানডস দরকার? transformers& Co। ব্যবহার করুন , আমাদের mtlবিশ্রামে রাখতে সহায়তা করুন ।
  • আপনি কি ইতিমধ্যে mtlএকটি বড় প্রকল্পে ব্যবহার করছেন? transformersসম্পূর্ণরূপে সামঞ্জস্যপূর্ণ নয়, তবে কেউ আপনাকে স্যুইচ না করার জন্য হত্যা করবে না।
  • অন্য প্যাকেজগুলির মধ্যে যে কোনওটি আপনার প্রয়োজনীয় অস্বাভাবিক কার্যকারিতা সরবরাহ করে? আপনার নিজের ঘূর্ণায়মানের পরিবর্তে এটি ব্যবহার করতেও পারে।
  • তবুও অসন্তুষ্ট? এগুলি সমস্তকে ছুঁড়ে ফেলুন, ডাউনলোড করুন category-extrasএবং বিশ্বের সমস্ত সমস্যার সমাধান করুন একটি পৃষ্ঠা এবং অজানা বিমূর্ত বিহীন বিব্রতকর শ্বাসরুদ্ধকর জেনেরিক কোডের অর্ধেক দিয়ে ।

4
যদি এমটিএল == ট্রান্সফর্মার ++ মোনাডস-এফডি হয় তবে কী কেবল এইভাবে প্রয়োগ করা যায় না? (এটি প্রতিস্থাপনের দিকে এক পর্যায় হিসাবে) যা ডেটা-অ্যাক্সেসর-এমটিএল-এর মতো স্টাফ রাখার প্রয়োজনীয়তা থেকে মুক্তি পাবে
ইয়ারছু

4
@ আইয়ারচু: আচ্ছা হ্যাঁ, তবে আপনি এটি সম্পর্কে আমার কী আশা করবেন? :) পিছনের দিকে সামঞ্জস্য বজায় রাখা যতটা সহজ মনে হয় না ততই গুরুত্বপূর্ণ লাইব্রেরি পরিবর্তন করতে সময়, প্রচেষ্টা এবং কিছুটা সম্প্রদায়ের সমর্থন লাগে। মোনাড ট্রান্সফরমার পরিস্থিতি একটি পরিচিত সমস্যা তবে আমি মনে করি না যে এটি দীর্ঘ শট দ্বারা কারও সর্বোচ্চ অগ্রাধিকার।
সিএ ম্যাকক্যান

4
@ আইয়ারচু: মূলত যা করা হচ্ছে তা ঠিক। এমটিএল পরবর্তী পরবর্তী সংস্করণটি এমন স্টাব হওয়া উচিত যা ট্রান্সফর্মারগুলি + মোনাডস-এফডি আমদানি করে এবং সেই সংস্করণটির সাথে সামঞ্জস্যতা সিদ্ধান্ত নেওয়ার কারণ হবে। এরপরে গ্রন্থাগারগুলি পৃথকভাবে আপডেট হতে সক্ষম হবে যাতে তারা এমটিএল 1.1 এবং 1.2 উভয়ের সাথেই সামঞ্জস্যপূর্ণ হয় এবং তারপরে অ্যাপ্লিকেশনগুলি যে কোনও সংস্করণ ইনস্টল করা আছে বা তাদের সর্বাধিক সীমাবদ্ধ লাইব্রেরি নির্ভরতা দ্বারা প্রয়োজনীয় হিসাবে কবুতরযুক্ত হয়ে যায়।
এডওয়ার্ড কেএমইটিটি

4
লাইব্রেরি মেলিং তালিকায় বর্তমানে মোনাডআইও (এবং সম্ভবত মোনাডট্রান্সকে এমটিএল এবং বেসে স্থানান্তরিত করার বিষয়ে আলোচনা করা হচ্ছে। যদিও "মোনাডবেস" কে এমপিটিসি, ফান্ডেপস ইত্যাদির প্রয়োজন আছে তা সত্ত্বেও এটি মোনাডআইও বা আরও সাধারণ মোনাডবেস বের করতে হবে কিনা তা নিয়ে ঝুলানো হয়েছে)। ।
এডওয়ার্ড কেএমইটিটি

28
যেহেতু আমি এই পোস্টটি অত্যন্ত তথ্যপূর্ণ পেয়েছি। আমি ভেবেছিলাম আমি অন্যান্য গুগলারের আপডেট করব: এমটিএল এখন ট্রান্সফর্মারগুলির উপর নির্ভর করে, মোনাডস-এফডি এখন এমটিএল-এর চারপাশে একটি স্টাব। সুতরাং আপনার যদি অতিরিক্ত অতিরিক্ত জিনিসপত্রের প্রয়োজন হয় তবে এমটিএল ব্যবহার করুন বা আপনার প্রয়োজনীয় সমস্ত কিছু থাকলে কেবল ট্রান্সফরমার আমদানি করুন।
jbodyman

19

মুহূর্তটির জন্য? আপনার সম্ভবত ব্যবহার করা উচিত mtl। কি হচ্ছে যে transformersগ্রন্থাগার একটি ফ্যাশন MTL থেকে বের উপাদান হচ্ছে যে monads-fdmonads-tfকরতে পারেন সহ অস্তিত্ব শান্তিপূর্ণভাবে, কিন্তু শেষ চেক যা এখনও ক্ষেত্রে ছিল না হয়।

যখন এটি ঘটে আপনি আমদানি করতে সক্ষম হবেন monads-fdএবং transformersএকই ইন্টারফেস এবং (প্রায়) পেতে, ব্যতিক্রম যে সঙ্গে State, ইত্যাদি জন্য উপনাম হতে হবে StateT

সুতরাং আমি লিখতে mtlচেয়েছি, তবে স্টেট, রিডার ইত্যাদি বর্তমানে এস dataহিসাবে প্রতিস্থাপন করা হবে বলে নির্ভর করে না type

MonadLib ইভারের আরেকটি বিকল্প যা কাজ করছে যা নিরাপদে ব্যবহার করা যেতে পারে কারণ এটি অন্যের সাথে কোনও মডিউলের নাম ভাগ করে না, তবে এর ব্যবহারের ধরণটি বেশ আলাদা different


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

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

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

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

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

16

আউট এডওয়ার্ড Kmett ফ্যাক্টরিং উল্লেখ মধ্যে তার উত্তর দেরী 2010 এর শেষ ফলাফল ছিল সম্পূর্ণ হয় monads-FD , উপর নির্মিত ট্রান্সফরমার , এর সংস্করণ 2 হয়ে MTLএমটিএল এর সর্বব্যাপীত্বের ফলস্বরূপ , মনডস -টিএফ কখনই সত্যই ধরা পড়েনি। 2017 এর প্রথমদিকে, এমটিএল এবং ট্রান্সফর্মারগুলি হ'ল একমাত্র মোনাড ট্রান্সফর্মার লাইব্রেরি যা ব্যাপক ব্যবহার দেখায়

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