Questão 1: Escreva uma função em Haskell, sem o uso direto de recursão, que receba um número e retorne o fatorial do número recebido.

Passo 1

O enunciado pede para criar uma função em Haskell que receba um número e retorne seu fatorial sem usar recursão direta. O conteúdo de matéria envolve funções de ordem superior e manipulação de listas para substituir a recursão.

Passo 2

Sabendo que o fatorial de um número n é definido como 1 times 2 times cdots times n, podemos gerar a lista de todos os números de 1 até n em Haskell usando a sintaxe de enumeração [1n].

Passo 3

Para efetuar a multiplicação de todos os elementos de uma lista sem recursão explícita, podemos usar a função padrão product, que calcula o produto de todos os itens de uma lista numérica.

Passo 4

Basta então definir a função de fatorial usando product sobre a lista gerada. Podemos também incluir uma assinatura de tipo para deixar claro que estamos trabalhando com Inte>=r:

Resposta

fatorial :: Integer -> Integer
fatorial n = product [1…n]

Exercícios relacionados