Próximo: Descartando, Anterior: 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, Anterior: Ajuda, Acima: Ajuda [Conteúdo][Índice]