У меня есть функция
type Reducer k v = k -> [v] -> [v]
Если у меня есть переменная r
из типа
Ord k => Reducer k v
и переменная input
из типа
Ord k => Map k [v]
Я могу написать выражение
Map.toList . Map.mapWithKey r input
и получить вывод типа [(k,[v])]
Теперь скажите, что у меня есть функция типа:
type ReducerM m k v = k -> [v] -> m [v]
и переменная rm
из типа:
(Ord k, Monad m) => ReducerM m k v
Я хочу применить выражение
Map.toList . Map.mapWithKey rm input
и получить обратно тип m [(k,[v])]
Может кто-нибудь помочь руководство мне как это сделать?