id
- это функция, которая возвращает свое входное значение в качестве результата. Если вам нужна функция, которая ничего не делает со своим входом, кроме как возвращает то же значение, тогда используйте id
.
Identity
- это оболочка простого типа, которая упаковывает тип t
для создания нового типа Identity t
, где значение типа Identity t
- это запись, содержащая только одно значение исходного упакованного типа t
.
Поскольку Identity
является алгебраическим типом данных, он может реализовать интерфейс в Idris. В частности, он реализует Monad
.
Иногда можно определить конструктор типов, который создает типы, которые реализуют Monad
, сначала определив монадный преобразователь, который принимает монадический тип в качестве одного из своих параметров. Чтобы обеспечить произвольный немонадный тип в качестве параметра для такого конструктора, сначала оберните немонадный тип, используя конструктор типа Identity
.
Например, см. Библиотечный модуль Control.Monad.Writer
.