(g x y), onde g é a função que será aplicada aos parâmetros x e y.
É possível a utilização de parênteses para a construção de expressões aninhadas:
(f (g x)) equivale a f(g(x)) na matemática!
Operadores Aritméticos:
+, -, *, /
(+ 2 3) resulta em 5
(* 2 3 4) resulta em 24
As operações + e * somam e multiplicam tudo que está dentro dos parênteses (+ 2 3 4) retorna 9
As operações - e / subtraem e dividem os demais parâmetros do primeiro:
(- 15 7 2) retorna 6
A operação +, sozinha, retorna 0
A operação *, sozinha, retorna 1
- e / não podem ser utilizados sozinhos!
Alguns exemplos de expressões:
(+ (* 2 4) 3) equivale 2 x 4 + 3
(* (+ 2 4) 3) equivale (2+4) x 3
(+ (+ 1 2) 3) equivale 1 + 2 + 3
(+ (/ 27 3) (* 3 2)) equivale
27 / 3 + 3 x 2
(/ (* (+ 8 a ) (- b 4)) 2) equivale
((8 + a) x (b - 4))/2
Avaliação de expressões :
Cada forma possível em scheme possui um valor associado.
reescrita: a cada passo da avaliação, uma parte da expressão é substituida por seu valor.
(+ (* 8 -5) 7.3 (* 2 7.3) executa mult.
(+ -40 7.3 (* 2 7.3)) executa multipl.
(+ -40 7.3 14.6) executa soma = -18.1
A ordem não é pré-definida.Um numeral resulta no próprio número!
Primitiva QUOTE:
Utilizada para que dados literais não tenham que ser avaliados:
(QUOTE A) retorna A
(QUOTE (A B C)) retorna (A B C)
É o mesmo que
´A retorna A
‘(A B C) retorna (A B C)
Seletores de Listas: car e cdr
car -> retorna o 1o. Elemento da lista
cdr -> retorna os demais elementos da l
Exemplos de CAR:
(car ‘(A B C)) retorna A
(car ‘((A B) C D)) retorna (A B)
Exemplos de CDR:
(cdr ‘(A B C)) retorna (B C)
(cdr ‘((A B) C D)) retorna (C D)
(cdr ‘(A)) retorna ()
Devem ser listas não nulas!
____________________________
CONS -> construtor de lista
constrói uma lista a partir de seus 2 argumentos:
1o. Átomo ou lista
2o. Normalmente lista
Insere o 1o. Argumento como o 1o. Elemento da lista do 2o. Parâmetro:
(cons ‘A ‘()) retorna (A)
(cons ‘A ‘(B C)) retorna (A B C)
- O CAR e o CDR desmontam a lista
- O CONS, monta novamente
- (cons (CAR lis) (CDR lis)) função identidade!
LIST :
Função que constrói uma lista de um número variável de parâmetros.
(LIST ‘Maçã ‘Laranja ‘Uva)
Equivale a:
(CONS 'Maçã(CONS 'laranja(CONS 'UVA'() ) ) )
Funções Predicado:
Retornam verdadero #V ou falso #F:
EQ?, NULL? E LIST?
(EQ? X Y):
Retorna #T se X e Y são átomos e iguais. Para X e Y simbólicos.
Retorna #F, caso contrário
(EQ? ‘A ‘A) retorna #T
(EQ? ‘A ‘B) retorna #F
(LIST? X):
Retorna #T se X for uma lista
Retorna #F, caso contrário
(LIST? ‘(x y)) retorna #T
(LIST? ‘x) retorna #F
(NULL? X)
Retorna #T se X for uma lista vazia
Retorna #F, caso contrário
(NULL? ‘(A B)) retorna #F
(NULL? ‘()) retorna #T
Funções de Predicados - dados numéricos:
Retornam #T ou #F
=(igual), <>(diferente), >(maior), <(menor), >= (maior ou igual), <= (menor ou igual), even? (é par?), odd? (é impar?)
OBS.: = para dados numéricos e EQ? Para dados simbólicos!
EQV?: funciona tanto para dados numéricos como para dados simbólicos (mais lenta).
Funções de Saída Simples:
(display expressão)
(new line)
Os parâmetros de scheme são sempre passados por valor!
Exibe também a saída automática do interpretador, exibindo o resultado das avaliações.
Funções para Construir Funções
Função Lambda na forma de lista:
(Lambda (L) (CAR (CDR L)))
Retorna o segundo elemento
(Lambda (L) (CAR (CDR L))) ‘(A B C)
Retorna B
Função Define:
Vincular um nome a um valor
Vincular um nome a uma expressão Lambda
(define símbolo expressão)
Exemplos:
(define pi 3.14159)
(define dois_pi (* 2 pi))
Vincular uma expressão Lambda a um nome:
Omite-se a palavra Lambda
2 Listas como parâmetro
(define (nome_da_função parâmetros)
corpo
)
Exemplo:
(DEFINE (quadrado number)
(* number number)
)
Aplicação: (quadrado 5)
Exibe 25.
(DEFINE (segunda A)
(CAR (CDR A)))
(segunda ‘(A B C)) retorna B
Exemplo:
Cálculo do fatorial de um número n
(DEFINE (fatorial n)
(COND
( (= n 0) 1)
(ELSE (* n (fatorial (- n 1)))
)
) ;fim do define
Nenhum comentário:
Postar um comentário