Próximo: Descartando, Previous: Ajuda, Acima: Ajuda [Conteúdo][Índice]
Maxima é escrito na liguagem de programação Lisp, e é fácil acessar funções Lisp e variáveis
a partir do Maxima e vice-versa.
Símbolos Lisp e Maxima são distingüidos através de uma convenção de nome.
Um símbolo Lisp que começa com um sinal de dólar $ corresponde a
um símbolo Maxima sem o sinal de dólar.
Um símbolo Maxima que começa com um ponto de interrogação ? corresponde a
um símbolo Lisp sem o ponto de interrogação.
Por exemplo, o símbolo Maxima foo corresponde ao símbolo Lisp $foo,
enquanto o símbolo Maxima ?foo corresponde ao símbolo Lisp foo,
Note que ?foo é escrito sem um espaço entre ? e foo;
de outra forma pode ser uma chamada errônea para describe ("foo").
Hífen -, asterisco *, ou outro caractere especial em símbolos Lisp
deve ser precedido por uma barra invertida \ onde ele aparecer no código Maxima.
Por exemplo, o identificador Lisp *foo-bar* é escrito ?\*foo\-bar\* no Maxima.
Código Lisp pode ser executado dentro de uma sessão Maxima.
Uma linha simples de Lisp (contendo uma ou mais formas) pode ser executada
através do comando especial :lisp. Por exemplo,
(%i1) :lisp (foo $x $y)
chama a função Lisp foo com variáveis Maxima x e y como argumentos.
A constução :lisp pode aparecer na linha de comando interativa
ou em um arquivo processado por batch ou demo, mas não em um arquivo processado por
load, batchload, translate_file, ou compile_file.
A função to_lisp() abre uma sessão interativa Lisp.
Digitando (to-maxima) fecha a sessão Lisp e retorna para o Maxima.
Funções Lisp e variáveis que são para serem visíveis no Maxima como
funções e variáveis com nomes comuns (sem pontuação especial)
devem ter nomes Lisp começando com o sinal de dólar $.
Maxima é sensível à caixa, distingue entre letras em caixa alta (maiúsculas) e letras em caixa baixa (minúsculas) em identificadores, enquanto Lisp não é sensível à caixa. Existem algumas regras governando a tradução de nomes entre o Lisp e o Maxima.
$foo, $FOO, e $Foo todos correspondem a Maxima foo.
|$FOO| e |$foo|
corresponde a Maxima foo e FOO, respectivamente.
|$Foo| corresponde a Maxima Foo.
A macro Lisp #$ permite o uso de expressões Maxima em código Lisp.
#$expr$ expande para uma expressão Lisp equivalente à expressão Maxima expr.
(msetq $foo #$[x, y]$)
Isso tem o mesmo efeito que digitar
(%i1) foo: [x, y];
A função Lisp displa imprime uma expressão em formato Maxima.
(%i1) :lisp #$[x, y, z]$ ((MLIST SIMP) $X $Y $Z) (%i1) :lisp (displa '((MLIST SIMP) $X $Y $Z)) [x, y, z] NIL
Funções definidas em Maxima não são funções comuns em Lisp.
A função Lisp mfuncall chama uma função Maxima.
Por exemplo:
(%i1) foo(x,y) := x*y$ (%i2) :lisp (mfuncall '$foo 'a 'b) ((MTIMES SIMP) A B)
Algumas funções Lisp possuem o mesmo nome que no pacote Maxima, a saber as seguintes.
complement,
continue,
//,
float,
functionp,
array,
exp,
listen,
signum,
atan,
asin,
acos,
asinh,
acosh,
atanh,
tanh,
cosh,
sinh,
tan,
break,
e gcd.
Próximo: Descartando, Previous: Ajuda, Acima: Ajuda [Conteúdo][Índice]