আইও মোনাডের সমালোচনা বিশ্বব্যাপী পরিচালিত একটি স্টেট মোনাদ হিসাবে দেখা হচ্ছে


46

IOমধ্যে Haskell একসংখ্যা প্রায়ই একটি রাষ্ট্র একসংখ্যা যেখানে রাষ্ট্র দুনিয়া যেমন ব্যাখ্যা করা হয়। সুতরাং IO aমোনাড টাইপের একটি মানকে এমন কিছু হিসাবে দেখা হয় worldState -> (a, worldState)

কিছু সময় আগে আমি একটি নিবন্ধ (বা একটি ব্লগ / মেলিং তালিকা পোস্ট) পড়েছিলাম যা এই দৃষ্টিভঙ্গির সমালোচনা করেছে এবং এটি সঠিক নয় কেন তার বেশ কয়েকটি কারণ দিয়েছে। তবে আমি আর্টিকেল বা কারণগুলি মনে করতে পারি না। কেউ জানেন?

সম্পাদনা: নিবন্ধটি হারিয়ে গেছে বলে মনে হচ্ছে, সুতরাং আসুন এখানে বিভিন্ন যুক্তি সংগ্রহ করা শুরু করুন। জিনিসগুলিকে আরও আকর্ষণীয় করে তোলার জন্য আমি অনুগ্রহ শুরু করছি।

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



@ জোয়াচিমসৌর ধন্যবাদ, এটি একটি আকর্ষণীয় নিবন্ধ, তবে এটি আমি খুঁজছি না। সেই একটি বিশ্বব্যাপী দৃষ্টান্তের দিকে মনোনিবেশ করেছিল।
পেটর পুদলেক

আমার মাথার শীর্ষে, মন্তব্যগুলি এখানে একটি দুর্দান্ত শুরু
অ্যাডাম

1
এই প্রসঙ্গে "বিশ্ব" এর অর্থ কী? আমার ধারণা এটির অর্থ পৃথিবী নয়। এটি কি একরকম বিশ্বব্যাপী সুযোগ? যে লেখক এটি লিখেছেন তিনি নিজেকে স্বল্প বিক্রি করছেন। যদি তিনি একই সাথে তাঁর পাঠকদের অহংকারকে বিভ্রান্ত করতে এবং চূর্ণ করতে চান তবে তার উচিত এটি "দ্য স্টেট ইজ ইউনিভার্স" বা "দ্য গড স্টেট" call ওয়ার্ল্ড। PAH! আপনার যুবকরা আজকাল যথেষ্ট উচ্চাকাঙ্ক্ষা করেন না!
গ্লেনপিটারসন

উত্তর:


33

সমস্যাটি IO a = worldState -> (a, worldState)হ'ল এটি যদি সত্য হয় তবে আমরা প্রমাণ করতে পারি forever (putStrLn "Hello") :: IO aএবং undefined :: IO aসমান। এখানে ডিলিওর প্রুফ সৌজন্যে (২০১০, বরক):

forever m
 =
m >> forever m
 =
fix (\r -> m >> r)
 = {definition of >> for worldState -> (a, worldState)}
fix (\r -> \w -> r (snd $ m w))

থিম: (\r w -> r (snd $ m w)) ⊥ = ⊥

(\r w -> r (snd $ m w)) ⊥
  =
\w -> ⊥ (snd $ m w))
  =
⊥ . snd . m
  =
⊥

অতএব forever m = fix (\r -> \w -> r (snd $ m w)) = ⊥

বিশেষত forever (putStrLn "Hello") = ⊥এবং তাই forever (putStrLn "Hello")এবং undefinedসমতুল্য প্রোগ্রাম। তবে, স্পষ্টতই এগুলি তত্ত্ব বা অনুশীলনে সমতুল্য প্রোগ্রাম হিসাবে বিবেচিত হবে না।

লক্ষ করুন যে এই মডেলটি সমঝোতা না করেও ভুল।


7
কেউ কি অবাক হয়ে যায় যে একটি অবিরাম কর্মসূচি undefinedহাস্কেলের খাঁটি শব্দার্থবিজ্ঞানের সমতুল্য ? হাস্কেলের খাঁটি শব্দার্থবিজ্ঞানে আলাদা আলাদা ধারণা করা যায় না! তবে যখন আমরা আমাদের প্রোগ্রামগুলি সম্পর্কে ক্রিয়াকলাপভাবে চিন্তা করি আমরা বিভিন্ন ধরণের distingu খুব আলাদা করতে চাই, এমনকি IOজড়িত না হয়েও ; আমার প্রোগ্রামটি একটি ব্যতিক্রম ছুঁড়েছে বা একটি অসীম লুপে প্রবেশ করছে কিনা তা আমি যত্নশীল, এমনকি যদি আপনি প্রমাণ করতে পারেন যে তারা উভয়ই ⊥ যদিও এটি আসলে কোনও দ্বন্দ্ব নয়।
বেন

3
Both এবং [0,1 ..] এর ডেনোটেশনগুলি পৃথক হলেও এগুলি উভয়ই "অবসানহীন"। পার্থক্যটি হ'ল ⊥ হ'ল নন-টার্মিনেটিং এবং অ-উত্পাদনশীল গণনাগুলি বোঝায় , যখন [0,1 ..] অবসানহীন তবে উত্পাদনশীল। আমরা প্রত্যাশা করি (চিরদিনের জন্য (putStrLn "হ্যালো")) একই ধরণের অবসানহীন তবে উত্পাদনশীল ডেনোটেশন রয়েছে।
রাসেল ও'কনোর

1
তবে অবশ্যই এর forever (putStrLn "Hello")মতো নয় [0,1..]। আপনার প্রমাণটি বিশেষভাবে নির্দিষ্ট নয় worldState, তাই এটি নিয়মিত রাষ্ট্র মোনাডের ক্ষেত্রেও প্রযোজ্য। একইভাবে forever (someModificationWith "Hello")ot এর সমতুল্য ⊥ আমি এই ফলাফল দ্বারা সম্পূর্ণরূপে উদ্বেগিত; এটা নয় denotational শব্দার্থবিদ্যা মধ্যে উত্পাদনশীল, এবং কি কম্পিউটার করছে : তৎপরতা চালাচ্ছে এমন যখন আমরা চিরকাল অপেক্ষা অপ্রাসঙ্গিক। একই জিনিস জন্য forever (putStrLn "Hello"); এটি কোনও নতুন বিশ্ব রাষ্ট্রের উত্পাদন না করে এবং হওয়া উচিত নয় আমরা কোনওভাবে অলসভাবে গ্রাস করতে পারি।
বেন

বুধ এবং ক্লিনের মতো প্রোগ্রামিং ভাষাগুলি কি আইও এর জন্য একটি ঘোষিত মডেল সরবরাহ করতে সুস্পষ্ট বিশ্ব-রাষ্ট্রের পাসিং ব্যবহার করে?
বেন

@ বেন আপনি কী উল্লেখ করছেন যে বিশ্ব কীভাবে একযোগে কাজ করে? আপনি কি বুধের একতাদের জন্য রোসটা কোড দেখেছেন? শব্দার্থগতভাবে এর অর্থ কী তা আমি ভাবলাম।
সিএমসিডিগ্রাগনকাই

12

এখানে একটি তুচ্ছ উত্তর: মোনাদে পরিচালিত কোনও ক্রিয়াকলাপের কারণে রাজ্য মনডের রাজ্যে যে কোনও পরিবর্তন ঘটে। সত্যই যদি "ওয়ার্ল্ডস্টেট -> (এ, ওয়ার্ল্ডস্টেট)" ব্যাখ্যাটি একই সম্পত্তি হিসাবে দাবি করে, ওয়ার্ল্ডস্টেটের খাঁটি মূল্য হ'ল কেবল আইও মোনাড পরিবর্তিত হয়, এটি ভুল। সময় পরিবর্তন, ফাইলগুলির বিষয়বস্তু, হ্যান্ডেলগুলির রাজ্য ইত্যাদি আইও মোনাডে যা ঘটে তা স্বাধীনভাবে পরিবর্তন করতে পারে। এটি আইও মোনাডের বিষয়। জিএইচসি নীচে একটি রিয়েল ওয়ার্ল্ড মান (বা ডাব্লু / ই এটি ছিল) এর চারপাশে যে ঘটনাটি ঘটেছে তা হ'ল গ্যারান্টি দেওয়া জিনিসগুলি যথাযথভাবে চালিত হয়েছে, যতদূর আমি জানি, যদি (এটি কেবল এসটি মূল্যবোধে রাখার মতো কিছু হতে পারে)।


8
এটি আসলে কোনও সমস্যা নয়। আপনি কিছু স্থির-অ-অজ্ঞাতনামা স্টোর থেকে প্রাপ্ত ওয়ার্ল্ড স্টেটে কোনও পরিবর্তন সম্পাদন করে বাইন্ড অপারেশনকে মডেল করতে পারেন।
sclv

1
@ এসএসএলভি: হ্যাঁ, তবে এই স্থির-তবে-অজ্ঞাতনামা রোল স্টোর হ'ল বিভেদযুক্ত কারণ যা আইওকে রাজ্য মনড করে না , এই অসঙ্গতিটি রাষ্ট্রের মোনাডে পাওয়া যায় না
জিমি হোফা

ওয়ার্ল্ডস্টেট রাষ্ট্রের বিরুদ্ধে আমি যে যুক্তি শুনেছি তা সামঞ্জস্য সম্পর্কিত, যদিও আমি সঠিক যুক্তিটি মনে করতে পারি না। তবে তবুও, আমি অনুমান করি যে ওয়ার্ল্ডস্টেট ভবিষ্যতেও এটির মধ্যে এনকোড করতে পারে, তাই আমি এখনও সত্যিই সমস্যাটি দেখতে পাচ্ছি না। অবশ্যই, আমি মনে করি আমি কিছু মিস করছি।
থমাস এডিং

@ জিমিহোফা: যদিও আপনি রাজ্যের রুল স্টোরের আশেপাশে যেতে পারেন।
sclv

1
@ জিমিহফা: এটি বিমূর্তির উদ্দেশ্য। এছাড়াও, আমার প্রাথমিক মন্তব্যে অনুসরণ করার জন্য, ক্লিন মডেলগুলি IO বিশ্বকে স্পষ্টভাবে এবং আনন্দের সাথে পাস করে চলেছে, স্বতন্ত্রতার ধরণগুলি ব্যবহার করে যাতে আপনি বিশ্বকে প্রতারণা করেন না এবং "নকল" করেন না তা নিশ্চিত করে। বিমূর্তি প্রয়োগের এটি একটি উপায়।
sclv

12

আপনার ভাষার জন্য রানটাইম সিস্টেমের সাথে যোগাযোগ করার জন্য কীভাবে আইও মডেল করবেন সেই প্রসঙ্গে আমি একটি ব্লগ পোস্ট লিখেছিলাম। (এটি স্বীকৃতভাবে একটি সিরিজের তৃতীয় অংশ)

http://comonad.com/reader/2011/free-monads-for-less-3/

এই পোস্টটি কেন 'বিশ্ব-উত্তরণ' এর শব্দার্থ সম্পর্কে তাত্পর্যপূর্ণ তা যুক্তিযুক্ত কিছুটা covers


+1 - বিশেষত আকর্ষণীয়, আমি যে ভাষাটির আইও এর সাথে একইরূপে ডিজাইন করছি সেটির আইও প্রয়োগ করার বিষয়ে আমি দীর্ঘ পরিকল্পনা করেছি! :)
জুলে

8

দেখুন বিশ্রী স্কোয়াড মোকাবেলা

এর বড় কারণ হ'ল আইও মোনাডের রিয়েল ওয়ার্ল্ড স্টেট মডেলগুলি সম্মতিতে ভাল কাজ করে না। এই পাঠযোগ্য ক্লাসিকের এসপিজে এটি বোঝার জন্য একটি অপারেশনাল শব্দার্থ ব্যবহার করে।


আমি বিশ্বাস করি এটি মূল নিবন্ধটি আমি খুঁজছিলাম, মূলত বিভাগটি ৩.১। আমি প্রশ্নটি সম্পাদনার আগে আপনি যদি এটি পোস্ট করে থাকেন তবে আমি আপনার উত্তরটি গ্রহণ করে নিয়েছি, তবে এখন আমি মনে করি শেষ পর্যন্ত অপেক্ষা করা আরও ন্যায্য হবে অন্যরা যে পোস্টগুলি পোস্ট করবে সেগুলি দেখার জন্য।
পেটর পুদলক

5

রিয়েল ওয়ার্ল্ড রাষ্ট্রের মডেলগুলি সম্পর্কে মূল অভিযোগটি হ'ল, যেমন ট্যাকটিক্স বলেছে, বিশ্ব-উত্তরণ অগত্যা একযোগে কাজ করে না। তবে ওয়াউটার সুইয়ার্সট্রা এবং থর্স্টেন আলটেনকির্চ দেখিয়েছেন কীভাবে "বিশ্ব-উত্তীর্ণ" প্রভাব হিসাবে সামঞ্জস্য সম্পর্কে যুক্তিযুক্ত, কীভাবে তাদের কাগজে "বিউটি ইন দ্য বিস্ট: অ্যাওকওয়ার্ড স্কোয়াডের জন্য একটি কার্যকরী সিমেটিকস" ইন্টারলেভেড থ্রেডের একটি স্থির-তবে-স্বেচ্ছাসেবী ধারা রয়েছে: HTTP : //www.staff.science.uu.nl/~swier004/Publications/BeautyInTheBeast.pdf

এটি সম্পর্কিত কোডটি আইওএসপেক হিসাবে হ্যাকেজে রয়েছে: http://hackage.haskell.org/package/IOSpec

আমার মনে হয় ওয়াউটারের থিসিস আরও বিশদে চলে গেছে: http ://www.staff.sज्ञान.uu.nl/~swier004/Publications/Thesis.pdf

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