Я учусь монады в Haskell и я анализирую этот пример (http://learnyouahaskell.com/a-fistful-of-monads):Как работает эта простая цепочечная привязка?
[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch)
Я хотел бы понять, что происходит в этой части функции:
\n -> ['a','b'] >>= \ch -> return (n,ch)
Что я понимаю заключается в том, что \ch -> return (n,ch)
составлен с аргументом \n -> ['a','b']
, но я не уверен, как это происходит. Я думал, что он имел следующую составленную функцию:
[1,2] >>= \n -> [n, \n -> ['a','b']]
Но это не похоже на выход тот же результат, делая полное выражение.
EDIT 1:
Принимая во внимание ответ ниже полный скобок является:
[1,2] >>= (\n -> (['a','b'] >>= \c -> return (n,c)))
Который привел меня, чтобы получить эту составленную функцию:
[1,2] >>= (\n -> [(n,'a'),(n,'b')])
Будьте осторожны с термином «частичной оценки». Это технический термин, который не связан с чем-либо, происходящим здесь. (Это метод оптимизации.) – Carl
Исправленная терминология к одному, я думаю, правильно отражает поведение. – OneEyeQuestion