Що таке монади оману зі світу haskell

Від перекладача: друзі, я не міг це не перевести. Коротко, ємко і легко про наших улюблених Монада. Вірніше, про одне хворому питанні, пов'язаному з ними.

У Haskell-співтоваристві існує проблема з Монада. Втім, ні, не зовсім так. Дозвольте я перефразую: у Haskell-новачків існує проблема з Монада, і Haskell-спільнота частково винне в цьому.

Фундаментальна помилка посібників про монадах

«Що таке монади?»

Я вважаю, сам це питання поставлено невірно. Багато Haskell-новачки щиро переконані: варто їм зрозуміти, що представляють собою монади, як вони відразу ж придбають здатність використовувати їх. І особисто я вважаю, що 99% людей, які намагаються вивчити Haskell, схильні до такого переконання. Так, для деяких людей з математичним складом розуму це може бути справедливо, проте для всіх інших (яких переважна більшість) це абсолютно не так.

Знаєте на що це схоже? Уявіть собі, що ви хочете навчитися грати на музичному інструменті. І питаєте: "А що таке музичні інструменти?" Правда в тому, що уявлення про будову того чи іншого музичного інструменту не має ніякого відношення до здатності грати на ньому. Якщо ви дійсно хочете навчитися грати на конкретному інструменті (будь то фортепіано, гітара, барабани або губна гармошка), ви повинні ... вчитися грати на цьому інструменті. Якщо ж ви просто дізнаєтеся, що представляє собою цей інструмент, це не наділить вас здатністю грати на ньому. "Ну так, у гітари є дека, гриф, колки, струни ... Хм ... І шо?"

Тому ваше запитання ніколи не повинен звучати так: "Я че щось не врублю в ці монади, допоможіть мені будь ласка!". Тому що це так само безглуздо, як запитати у гітариста: "Че-то не пойму я цю гітару, поясни-но мені!" Замість цього запитаєте, наприклад, так: "Я не зрозумію як працює оператор >> = в монаді Either e . "Питання, поставлене таким чином, в тисячу разів краще.

Чому так відбувається?

Я вважаю, причина в тому, що деякі Haskell-розробники занадто вже захоплений щодо класів типів. Так, класи типів прекрасні, але вони не є "річчю в собі". Вони корисні і сильні лише в контексті практичного їх застосування, в мові і в бібліотеках. І саме ця проста думка часто забувається в запалі Монадический суперечок.

Уявіть собі, що всі музиканти в світі почали б говорити: "Я нарешті зрозумів музичні інструменти!" Погодьтеся, подібні слова сформували б у непосвячених людей абсолютно невірне уявлення про музичні інструменти. Не зрозумійте мене неправильно: знання устрою музичних інструментів - це надзвичайно корисне знання, проте воно не має прямого відношення до майстерності гри.

Як же виправити цю ситуацію? Чесно, я не знаю, чи можна це виправити. Однак ми можемо донести до новачків просту думку: монади подібні музичним інструментам, їх багато, вони різні і грати на них слід теж по-різному.