Относительно оператора рыбы Монады удовлетворяют ассоциативности.Что можно доказать о параметрах в лямбда-выражениях, переданных в монады?
(h >=> g) >=> f = h >=> (g >=> f)
Это переводится связать (с лямбда-выражений) выглядит,
\a -> h a >>=(\b -> g b >>= \c -> f c) =
\a ->(h a >>= \b -> g b)>>= \c -> f c
, что означает следующее уравнение однозначен
(a -> h a >>= \b -> g b >>= \c -> f c) = h >=> g >=> f
Это хороший способ понять Монадические композицию.
Однако не все Monadic-коды сохраняют связанные переменные в lambdas. Например,
[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch) =
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
«n» в обратном направлении было получено из верхней лямбда.
В более общем плане,
a -> g a >>= \b -> f a b
е зависит от А и Б в указанных выше. Определение выше в терминах е, ж, и (> =>) дает
\a -> (\x -> g a) >=> f a
Что я не понимаю, очень хорошо. Это не соответствует приведенному выше уравнению, которое я показал очень хорошо. Я рассматриваю рыбу как основное понятие здесь, и я пытаюсь понять, как она взаимодействует с типичными монадами, которые я пишу. Я хотел бы лучше понять это.
Один из подходов это, пытаясь получить значение из выражения списка синтаксиса
[ (n,ch) | n <- [1, 2], ch <- ['a', 'b'] ]
Я думаю, что это подразумевает вид симметрии.
Есть ли симпатичные симметрии, соединяющие лямбда-выражения и монады? Или я слишком много читаю в этом? Является ли мой страх перед сильно вложенными лямбда-выражениями неправильным или разумным?
Я вообще не понимаю этот вопрос. – melpomene
«Интуитивно, я боюсь тонкой связи между вложенными лямбдами». - Не могли бы вы сказать немного больше о том, что вас беспокоит? – duplode
@duplode Мое редактирование разъясняет мое беспокойство? – Polymer