В  документации chain вы найдете:
Вызов
chainна обернутом объекте вызовет все вызовы будущих методов для возврата обернутых объектов. Когда вы закончите вычисление, используйтеvalueдля получения окончательного значения.
Таким образом, функция chain создает монаду?
