В чем разница между монадой и замыканием?

StackOverflow https://stackoverflow.com/questions/790719

  •  16-09-2019
  •  | 
  •  

Вопрос

я немного сбит с толку, читая определение между этими двумя понятиями.Могут ли они действительно пересекаться с точки зрения определения?или я совсем заблудился?Спасибо.

Это было полезно?

Решение

Замыкания в том смысле, в каком это слово обычно используется, — это просто функции (или блоки кода, если хотите), которые вы можете рассматривать как часть данных и передавать другим функциям и т. д.(«закрытый» бит заключается в том, что где бы вы его ни вызвали, он ведет себя так же, как если бы вы вызвали его там, где он был изначально определен).Монада (примерно) больше похожа на контекст, в котором функции могут быть последовательно объединены в цепочку, и контролирует передачу данных от одной функции к другой.

Другие советы

Они совершенно разные, хотя монады часто использовать замыкания для захвата логики.

Лично я бы постарался уточнить определение замыканий (по сути, это часть логики, которая также фиксирует свое окружение, т.е.локальные переменные и т. д.), прежде чем беспокоиться о монадах.Они могут прийти позже :)

В Stack Overflow есть разные вопросы о замыканиях. Самый лучший из них будет зависеть от того, на какой платформе вы работаете.Например, есть:

Лично я только начинаю «вникать» в монады (спасибо книге, над которой я помогаю).Когда-нибудь я напишу о них статью, когда почувствую, что понимаю их достаточно хорошо :)

«Замыкание» — это объект, содержащий 1) функцию и 2) значения его свободных переменных, в которых он создан.

«Монада» — это класс функций, которые можно составить определенным образом, т.е.с помощью связанного связывать и возвращаться операторы функций более высокого порядка для создания других функций.

Я думаю, что монады немного сложнее замыканий, потому что замыкания — это просто блоки кода, которые запоминают что-то с точки зрения своих определений, а монады — это конструкция для «подкручивания» обычной операции композиции функций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top