इस IO
कोड को देखते हुए:तीसरा मोनॉयड लॉ और आईओ?
Prelude> let e = return() :: IO()
Prelude> e `mappend` e
Prelude> let y = e `mappend` e
Prelude> :t y
y :: IO()
संपादित जाहिर है, के रूप में मैं समझता हूँ, IO
एक Monoid
उदाहरण है।
हालांकि, मोनॉयड तीसरे कानून का पालन करने के लिए निम्नलिखित मूल्यांकन true
पर नहीं होना चाहिए?
Prelude> e `mappend` (e `mappend` e) == (e `mappend` e) `mappend` e
<interactive>:14:1: error:
* No instance for (Eq (IO())) arising from a use of `=='
* In the expression:
e `mappend` (e `mappend` e) == (e `mappend` e) `mappend` e
In an equation for `it':
it = e `mappend` (e `mappend` e) == (e `mappend` e) `mappend` e
एक वैध, सहजता से सही 'ईक (आईओ ए)' उदाहरण * जरूरी * उपयोगी होगा, अगर इसे लिखना संभव था। लेकिन एलन ट्यूरिंग उसकी कब्र में बैठेगी और यदि आप कोशिश करते हैं तो आपको एक जीभ-झटके दे देंगे। – dfeuer
@ dfeuer मुझे समस्या नहीं दिखाई दे रही है। आखिरकार, हमारे पास 'eq [a]' उदाहरण है। –
@ReinHenrichs, आप एक बिंदु है! – dfeuer