Я пытаюсь реорганизовать вызов функции mapM_
внутри блока do
в Haskell. Я хотел бы извлечь lambda для (локально) названной функции, чтобы сделать код более читаемым.
Мой код изначально выглядит так:
do
-- ...
mapM_ (\x -> x + 1) aList
return aValue
Я хотел бы изменить его на
do
-- ...
mapM_ func aList
where func x = x + 1
return aValue
но я получаю синтаксическую ошибку в строке return aValue
. Моя фактическая лямбда сложнее:-), но я попробовал ее с помощью той же лямбда, чтобы убедиться, что это не проблема в лямбда-коде.
Как я могу переписать этот код? Должен ли я использовать let
... in
вместо?