Прошу прощения за мой простой мозг, но у меня проблемы с Haskell, особенно списками. Я попытался написать функцию, чтобы вернуть все подстроки заданной длины n (это будет уменьшаться на единицу при каждом вызове функции, начиная с длины исходной строки - 1) строки (без импорта модулей). Я написал следующий кодПонимание списков в Haskell
allSubs :: Int -> Int -> String -> [String]
allSubs x n s
|n > x = (take n (drop x (tail s))) : allSubs (x+1) n s
Я не ожидая помощи с логикой или робастности моего кода, независимо от того, как недостатки. Но я хотел бы знать, если какой-либо список даже создается. Я только предварительно закодированы в C, где я мог бы просто ввести
else { return listx }
или что-то, но в этом случае, что бы имя списка быть? и если бы я хотел использовать этот список в другой функции, например, если я хотел найти повторный строку в списке с помощью функции findRep я мог бы написать
|otherwise = findRep list
Любые советы будут оценены.
Если функция должна возвращать все подстроки строки, не должен он брать только один аргумент (сама строка)? Каковы первые два аргумента ('x' и' n') вашей функции 'allSubs', которая должна быть? – Jubobs
Мое намерение состоит в том, что это будет небольшая функция более крупной программы, которая возвращает самую длинную повторяющуюся подстроку строки. X начнется с 0, n будет длиной строки - 1, затем -2 и т. Д. –
Используете ли вы 'ghci'? Просто запустите свою функцию с некоторыми тестовыми значениями. Или скомпилируйте и запустите этот однострочный шрифт: 'main = print $ allSubs 3 4" humma "' Конечно, вы должны выполнить определение своей функции, предоставив код для случая «othewise». – ErikR