Э-э-э…
Нет, один человек вот
комонады объектами называл (но потом вроде как передумал). Но монады… это будет слишком узко, да и не понял, где в вашем примере монады. Просто присваивание атрибутов на основе значений других. Может, каким-то боком за монаду — единичный функтор и сойдёт, но это, понятно, несмешная шутка.
Да и вообще не шутка — в коде ни одного bind/join и return.
Тип
, являющийся монадой — это «тип значений
в контексте» (определяемом
и реализацией методов, которые позволяют «оборачивать» композиции функций, чтобы они «учитывали» контекст). Например, значение, которое может отсутствовать. Или потенциальное множество значений. Или распределение вероятностей. Или значение, в котором может читаться/записываться какое-то состояние. Соль в примере кода должна быть в этом. И в (см. ниже) красивом синтаксисе, который, лично я считаю, нельзя не учитывать.
В JS динамическая типизация накладывает неудобные ограничения. Там, где в других случаях сработал бы вывод типов, тут всю соответствующую информацию придётся писать руками. Хотя в этом случае, вроде, ещё всё спокойно.
Мало того что нужно знать, что есть толк рассматривать как монады, а что нет, так ещё и синтаксис желательно иметь подобный do-нотации хаскеля. От него вещи смотрятся естественнее, а ещё он напоминает списочные выражения (list comprehensions), и в исполнении монады-списка они даже совпадают, что говорит о том, что какие-то идеи тут угаданы очень хорошо. Можно ли в JS сделать так красиво без кучи улыбающихся скобочек в конце выражения — хмм.