1) Implemente algo que representa uma arvore de busca binaria (isto é voce pode implementar a arvore como voce quiser, com listas, vetores, objetos CLOS, structures, etc). A arvore vai armazenar ``coisa''. Implemente a função INCLUE que dado uma arvore binaria, uma coisa, e uma função de comparação inclue a coisa na arvore, se ela ainda não esta lá, e retorna a arvore nova. A função de comparaçao é uma funçào de 2 argumentos que dado 2 coisas, retorna -1 se a primeria é menor que a segunda, 0 se são iguais, e 1 se a primeira é maior que a segunda. 2) Escreva uma função RODA que dado uma lista e um numero $n$ como argumentos, retorna uma lista que é o resultado da concatenação da sublista que começa na posição n com a sublista que começa da primeira posição ate a posição n-1. Exemplos: (RODA '(a b c d e) 2) > (c d e a b) (RODA '(a b c d e) 4) > (e a b c d) O numero n representa a posição da forma do Lisp, isto é 0 é a primeria posição. n será maior que 0 e menor que o tamanho da lista, nao é preciso testar isso. 3) Escreva a função IMPAR que dado uma lista retorna uma lista com os atomos (e apenas atomos) que estao nas posições impares da lista (o primeiro elemento esta na posicao 1). Ex: (impar '(a b c d e f g h i)) => (a c e g i) (impar '(a (b c d) (e f) g h i)) => (a h) 4) escreva uma funcao MATMUL que recebe duas matrizes, e retorna uma matriz com o produto delas, se as dimensoes forem apropriadas, ou nil se as dimensoes nao forem apropriadas para a multiplicacao.