Академический Документы
Профессиональный Документы
Культура Документы
Linguagem LISP
Surgiu no nal dos anos 50 - John McCarthy (MIT). Linguagem para processamento simblico. Muito usada em aplicaes em Inteligncia Articial. Outras aplicaes incluem AutoCad, Editor Emacs, etc. Linguagem funcional - LISP puro no possui atribuies (livre de efeitos colaterais). Lisp no compliado (cdigo fonte para cdigo objeto de mquina), mas sim interpretado por meio de um interpretador. Interpretador implementado usando estruturas de listas encadeadas. Coletor de lixo faz parte do sistema.
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP
MuLISP
H muitos dialetos de LISP: Mac Lisp Franz Lisp Common Lisp Golden Lisp MuLisp, etc. Uma pgina contendo vrios sistemas LISP: http://magnum.ime.uerj.br/mpmelo/IME4701/2002-2.htm
Linguagem Funcional
Aplicao de funo a seus argumentos, com a possibildiade de composio funcional. Uso intenso de recurso. LISP signica LISt Processor Dijkstra brincava dizendo: LISP a maneira mais elegante de disperdiar recursos :-) Outra brincadeira: LISP signica Lot of Irritating Stupid Parenthesis.
MuLISP5.1
MuLISP foi desenvolvido nos anos 80 para o sistema DOS. A partir de MuLISP a empresa Soft Warehouse de Honolulu desenvolveu o MuMath cujo sucessor o sistema Derive, um sistema de lgebra computacional. MuLISP bem compacto. O cdigo ocupa apenas 38 Kbytes. Possui aritmtica de preciso ilimitada (como o nosso programa 1 do curso).
Demonstrao MuLISP
No prompt do sistema DOS, tecle mulisp. O sinal de prompt do MuLISP o sinal de dlar $ Depois do prompt $ pode-se entrar uma funo seguida de argumentos, se houver. O interpretador MuLISP vai avaliar a funo e retornar o resultado da avaliao. Exemplos: $5 5 A funo constante 5 vai devolver o nmero 5. $ (+ 3 5) 8 O primeiro elemento da lista + interpretado como uma funo (soma), os demais elementos (3 e 5) so argumentos da funo. O MuLISP retorna o valor da soma.
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP
Demonstrao MuLISP
$ (+ 3 5) ou (quote (+ 3 5)) (+ 3 5) O smbolo ou a funo quote faz com que o argumento em seguida seja tratado como um valor literal que, portanto, no avaliado. $ (+ 3 (- 10 2)) 11 Composio de funes possvel. $ (+ (* 5 2) (- 10 2)) 18 Mais composies de funes. $ (* 123456789 987654321) 121932631112635269 Preciso ilimitada: cada nmero armazenado como uma lista ligada de algarismos. (system) Termina o interpretador MuLISP e retorna-se ao DOS.
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP
Demonstrao MuLISP
$ (zerop 9) nil A funo zerop testa se o argumento zero. Se sim retorna T caso contrrio retorna nil. $ (zerop (- 100 (+ 80 20))) T $ (sub1 60) 59 A funo sub1 subtrai um. $ (defun cubo (n) (* n n n)) cubo Defun serve para denir uma funo. Aps a denio o sistema retorna o nome da funo. De agora em diante, pode-se usar a funo denida. $ (cubo 2) 8
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP
Demonstrao MuLISP
$ (defun fatorial (n) (cond ( (zerop n) 1) ( T (* n (fatorial (sub1 n)))) ) ) fatorial Cond uma condicional. Segindo Cond vm pares de funes. Avalia-se o primeiro elemento de cada par, sucessivamente, at se chegar a um valor no-nil. Entao o valor de Cond o valor do segundo elemento do par. $ (fatorial 5) 120 Experimente chamar fatorial com nmero bem grande. $ (rds doctor.lsp) doctor A funo rds l o programa escrito em MuLISP especicado pelo argumento e inicia a avaliao.
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP
Este programa recebe uma sequncia de nmeros e tenta descobrir o prximo. Por ex: $ (nextterm (quote ( 1 2 3 4 5) )) vai produzir o nmero 6. Experimente outras sequncias.
Siang Wun Song - Universidade de So Paulo - IME/USP Uma Aula Prtica sobre LISP