Exercício 42
Escreva uma função n-esimo que devolva o n-ésimo elemento de uma lista. Note que o primeiro elemento da lista corresponde a n igual a zero.
Exercício 43
Escreva uma função muda-n-esimo que recebe um número n, uma lista e um elemento, e substitui o n-ésimo elemento da lista por aquele elemento. Note que o primeiro elemento da lista corresponde a n igual a zero.
Exercício 44
Escreva uma função que calcula o comprimento de uma lista, i.e., determina quantos elementos ela tem.
Exercício 45
Escreva uma função que recebe um elemento e uma lista que contém esse elemento e devolve a posição desse elemento na lista.
Exercício 46
Escreva uma função que calcula o número de átomos que uma lista (possivelmente com sublistas) tem.
Exercício 47
Escreva uma função junta que recebe duas listas como argumento e devolve uma lista que é o resultado de as juntar uma à frente da outra.
Exercício 48
Defina uma função inverte que recebe uma lista e devolve outra lista que possui os mesmos elementos da primeira só que por ordem inversa.
Exercício 49
Escreva uma função designada inverte-tudo que recebe uma lista (possivelmente com sublistas) e devolve outra lista que possui os mesmo elementos da primeira só que por ordem inversa, e em que todas as sublistas estão também por ordem inversa, i.e.:
> (inverte-tudo '(1 2 (3 4 (5 6)) 7)) (7 ((6 5) 4 3) 2 1)
Exercício 50
Escreva uma função mapear que recebe uma função e uma lista como argumentos e devolve outra lista com o resultado de aplicar a função a cada um dos elementos da lista.
Exercício 51
Escreva uma função denominada alisa que recebe uma lista (possivelmente com sublistas) como argumento e devolve outra lista com todos os átomos da primeira e pela mesma ordem, i.e.
> (alisa '(1 2 (3 4 (5 6)) 7)) (1 2 3 4 5 6 7)
Exercício 52
Escreva uma função membro? que recebe um objecto e uma lista e verifica se aquele objecto existe na lista.
Exercício 53
Escreva uma função elimina que recebe um elemento e uma lista como argumentos e devolve outra lista onde esse elemento não aparece.
Exercício 54
Escreva uma função substitui que recebe dois elementos e uma lista como argumentos e devolve outra lista com todas as ocorrências do segundo elemento substituídas pelo primeiro.
Exercício 55
Escreva uma função remove-duplicados que recebe uma lista como argumento e devolve outra lista com todos os elementos da primeira mas sem duplicados, i.e.:
> (remove-duplicados '(1 2 3 3 2 4 5 4 1)) (3 2 5 4 1)
Exercício 56
Escreva as funções inversas do cons, car e cdr, designadas snoc, rac e rdc. O snoc recebe um elemento e uma lista e junta o elemento ao fim da lista. O rac devolve o último elemento da lista. O rdc devolve todos os elementos da lista menos o primeiro.
Exercício 57
As funções todos?, algum?, nenhum? e nem-todos? são predicados que recebem uma função e uma lista e verificam, respectivamente, se a função é verdade para todos os elementos da lista, se é verdade para pelo menos um, se não é verdade para todos e se não é verdade para pelo menos um. Defina estas funções.