Мне нужна функция, используемая дважды в строке. Я собираюсь объяснить, что хочу, поэтому надеюсь, что в конце вопроса вы получите то, что я имею в виду.Использование функции дважды с использованием карты
У меня есть эта функция.
foo :: String -> [String]
foo = ...
Теперь я хочу, чтобы эта функция использовалась дважды в строке. Поэтому при первом использовании он должен запускать foo с помощью String, который присваивается функции, а во втором - использовать каждую строку из [String], которая создается при первом запуске. Поэтому я догадался, что карта - лучшая функция для этого. Так я получил эту функцию теперь
f :: String -> [String]
f w = map foo (foo w)
Но compliler дает мне эту ошибку:
MyHaskell.hs:86:19:
Couldn't match type `[Char]' with `Char'
Expected type: String -> String
Actual type: String -> [String]
In the first argument of `map', namely `edits1'
In the expression: map edits1 (edits1 word)
Я думаю, проблема в том, что моя функция Foo (String -> [String]) не работает с отображением ((a-> b) -> [a] -> [b]).
Как это исправить?
который равен 'import Control.Monad; f = foo> => foo'. – user3237465
также совпадает с 'concatMap foo. Foo'. –
И в 10 раз более читаемый, чем решение 'foo> => foo'. – alternative