У меня есть простая функция и желание разобраться в стиле без очков.Можно ли сделать эту рекурсивную функцию свободной?
shout :: String -> String
shout input
| null input = []
| otherwise = (toUpper . head $ input) : (shout . tail $ input)
Моей интуиция привела меня к этому
pfShout :: String -> String
pfShout = (toUpper . head) : (shout . tail)
который жалуется следующим за первый аргумент минусов клетки
не мог соответствовать ожидаемому типу «String -> Строка ' с фактическим типом' [[Char] -> Char] '
Возможная причина: '(:)' применяется к слишком большому количеству аргументов
В выражении: (toUpper. голова):. (pfShout хвост)
В уравнении для 'pfShout': pfShout = (ToUpper головка):.. (pfShout хвост)
и жаловался об этом на второй аргумент против клеток
не удалось соответствует ожидаемому типа [[Char] -> Char] с фактическим типом '[Char] -> Строка'
Возможная причина: '(.)' Применяется слишком мало аргументов
Во втором аргументе '(:), а именно: «(pfShout. хвост)»
В выражении: (ToUpper голова):.. (pfShout хвост)
В уравнении для 'pfShout': pfShout = (ToUpper головка):.. (pfShout хвост)
Это мне ясно, что я не могу сделать список из «String -> String» функции и '[[Char] -> Char], и я начинаю, чтобы получить к месту, где я думаю, что это просто не будет работать безотлагательно.
Я понимаю, что здесь есть другие соображения (например, сейчас у меня нет базового футляра), но. Я также понимаю, что могу полностью переписать функцию для достижения такого же эффекта (например, map toUpper
). Я в первую очередь интересуюсь point-free с использованием рекурсии с функцией, как написано.
Если есть (или нет), можно написать эту функцию без точек, что мне не хватает?
бы 'рупор = карта toUpper' работает? –
Ох, есть определенные способы полностью настроить его, но мне было интересно, могу ли я сделать рекурсивную версию без слов (поскольку я печатаю это, я думаю «возможно, рекурсия - это то, почему я не могу указать»). Shoulda сделал это более явным в моем вопросе – Matt
Предположим, что вам удалось исправить '(toUpper. Head): (крик. Хвост)' (это возможно). Как заканчивается рекурсия? Вам нужно оценить какое-то условие. Как вы пишете условие беспроблемным образом? –