Я пытаюсь найти монады в Haskell, но пока не зашел слишком далеко.Разница между конструктором типа и функцией возврата монады (в Haskell)
Я нашел https://en.wikibooks.org/wiki/Haskell/Understanding_monads#cite_note-1 и несколько других руководств/объяснений, но ни один из них не объясняет разницу между конструктором типа и функцией возврата.
Как я понял конструктор типа
- строит монаду от заданного значения базового типа данных. Так что это обычный конструктор, как в Java, который строит из данного параметра новый экземпляр.
return
Функция применяет конструктор типа по заданному значению базового типа данных и возвращает построенную монаду.
Итак, в чем смысл иметь две функции, выполняющие в основном то же самое?
EDIT Так, используя пример Может быть, монада, в
country = Just "China"
: (конструктор) создает монаду для значения «Китай».return "China"
: возвращает монаду, соответствующую стоимости Китая, поэтому в основном это монада, содержащая значение"China"
.
Вообще говоря, я понимаю монаду как контейнер ценностей. Одно использование монад - объединение простых/существующих вычислений в более сложные вычисления.
Я боюсь, что это на самом деле не понимаю, что вы пытаетесь спросить и несколько вещей, которые я понимаю, кажется мне неправильным ... может вы вероятно, сделать это немного более конкретным? Давайте поговорим о 'Maybe'-monad, чтобы сделать это простым:' Maybe' - это конструктор типа, 'return = Just', поэтому можете ли вы перефразировать свой вопрос, используя это? – Carsten
btw: они никогда не будут делать то же самое - вы можете просмотреть конструктор типа как функцию, но это функция на уровне уровня - 'return' будет обертывать значение в монаду – Carsten
. Я не знаю, согласен ли я с дубликат ... похоже, это другая проблема с уровнем понимания здесь – Carsten