Теперь в библиотеках Haskell может быть что-то сделать, что я хочу. Мне достаточно noob, чтобы не знать ничего лучше, и я пытаюсь написать пользовательскую функцию карты, используя инструменты, которые я знаю. Тип подпись должна бытьЗапись пользовательской функции карты
myMap :: (Monad m) => (a -> b) -> [m a] -> [m b]
myMap f as
где возвращает список после применения f
для каждого значения в каждой монаде в as
.
Моя первая попытка была
myMap f = map (\x x >>= f)
Однако это имеет тип подписи
myMap :: (Monad m) => (a -> m b) -> [m a] -> [m b]
Это так близко к тому, что мне нужно, я могу закричать. Теперь мне нужно несколько советов о том, как продолжить отсюда. Я действительно надеюсь, что это так же просто, как библиотечная функция, но я готов написать свою собственную короткую функцию, чтобы сделать это вместо этого.
Связанные Вопрос:
Mapping a function over two input lists
И это может быть ет уменьшено. – augustss
Похоже, 'liftM' - это функция библиотеки, которую я искал. –