Я недавно читал узнать вам Haskell, и я наткнулся на выражении:Haskell Монада реализация
[1,2] >>= \n -> ['a', 'b'] >>= \ch -> return (n, ch)
этих выражениях возвращает результат
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
так я понимаю, что монадическая привязка для списков осуществляются следующим образом:
xs >>= f = concatMap f xs
Принимая первую половину выражения, а именно:
[1,2] >>= \n -> ['a', 'b']
он оценивает в ['a','b','a','b']
, от того, что я понимаю, это затем подается в функцию: (\ch -> return (n , ch))
.
Что я не понимаю, так это то, как значения 1,2 из списка присваиваются n, а затем как компилятор ведет запись, а затем назначает ему n в последней функции?
*** Опуская явные скобки в изучении материала Зла *** Слишком жесткая? Спросите бесчисленных новичков, которые теряют бесчисленные часы из-за этого. –