P1
выглядит как 1-элементный, тривиальный тип продукта . В Хаскеле это будет записано как:
data P1 a = P1 a
(тип Identity
в Хаскеле).
то есть это контейнер с другим типом a
.
Этот тип также реализует простейшую монаду Identity
, которая позволяет непрозрачно применять функции к содержимому поля.
В вычислительном отношении нет смысла использовать монаду Identity
вместо гораздо более простого действия простого применения функций к своим аргументам, однако это может быть полезно при проектировании стеков преобразователей монад.
Реализация монады тождественной монады тривиальна,
return a = P1 a
(P1 m) >>= k = k m
Как видите, это просто приложение функции.