Так, чтобы мой код выглядел похожим при использовании монад, когда я использую аппликаторы и функторы, я использовал =<<
вместо >>=
. Я также использовал <*
вместо *>
/>>
. Однако я заметил, что <*
НЕ *>
, что =<<
- >>=
.Обратный оператор >> в haskell
Например:
print 5 <* print 6
дает мне:
5
6
Когда я ожидал их на печать наоборот, с print 6
называют, печать 6, а затем результат ()
получения выбрасывается, а затем вызывает print 5
.
После продолжения игры вокруг это кажется <*
и *>
отличаются только возвращаемыми значениями, а не такими, как функции объединены/упорядочены. В то время как =<<
является правильным переворотом >>=
, включая переключатель в фиксации слева направо.
мне было интересно, почему это было так (похоже >>=
это назад, но это как-то лучше подходит с, а не назад, <*>
<*
*>
комбинации, даже если подписи типового >>=
и <*>
перевернуты). Мне также было интересно, есть ли оператор стиля <<
, который я мог/должен использовать.
В качестве побочного вопроса, когда делает левую и правую ассоциативность, даже имеет значение, когда дело доходит до =<<
, кажется, что независимо от того, где вы помещаете скобки, результат тот же, хотя я, по общему признанию, простые примеры.
Возможный дубликат: http://stackoverflow.com/questions/14176667/why-is-there-no-in-the-haskell-standard-library –