2009-04-26 4 views

ответ

19

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

+1

Это помогает мне, спасибо! – user63657

+2

Nice - это одно из лучших кратких описаний монад, которые я видел. –

+0

+1 - Очень приятно, действительно. Спасибо. – duffymo

5

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

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

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

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

+0

Jon- Мне очень нравится эта часть вашего ответа: «Однажды я расскажу о них, когда почувствую, что понимаю их достаточно хорошо :)« Продолжайте! Удачи! – 2009-06-03 04:17:23

1

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

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

0

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

Смежные вопросы