Questão 6: Escreva uma função numeros que receba um número inteiro n >= 0 e retorne uma String s com números de 1 até n, conforme os exemplo abaixo:
> numeros 5
"1 2 3 4 5"
> numeros 12
"1 2 3 4 5 6 7 8 9 10 11 12"
> numeros 0
""

Passo 1

Neste exercício, queremos definir uma função numeros que recebe um inteiro n>=0 e retorna uma String com os números de 1 até n separados por espaços. Vamos usar programação funcional em Haskell.

Passo 2

Precisamos gerar a sequência de números de 1 a n. Em Haskell, isso é feito com a sintaxe de enumeração de listas: [1..n], que produz a lista de inteiros de 1 até n.
Depois, para transformar cada inteiro em texto, usamos a função show, que converte um valor numérico em sua representação em String. Aplicamos isso a todos os elementos da lista usando map show [1..n].

Passo 3

Para juntar todas essas strings com espaços entre elas, usamos intercalate " " do módulo Data.List. A função intercalate recebe um separador e uma lista de strings, retornando uma única string com os elementos intercalados pelo separador. No caso de lista vazia ( n=0), o resultado é "".
Basta então combinar essas operações na definição de numeros: gerar a lista, converter para strings e intercalar com espaços.

Resposta

import Data.List (intercalate)
numeros :: Int -> String
numeros n = intercalate " " (map show [1…n])

Exercícios relacionados