LISP: argv

Quando o lisp surgiu, ele era uma linguagem de programação bastante avançada para a época. Tão avançada que foram necessárias máquinas especialmente projetadas para rodá-lo. O tempo foi passando e as máquinas evoluindo. Hoje podemos rodar lisp em qualquer máquina, em virtualmente qualquer sistema operacional.

Hoje em dia chamamos o interpretador lisp por uma linha de comando, que inclusive podemos passar argumentos através dessa linha de comando:
clisp source.lisp argumento1 argumento2 argumento3 ...

Mas na época que o lisp foi inventado, as linhas de comando eram o próprio lisp e por isso não havia motivo para criar um padrão de como acessar esses argumentos externos. Por esse motivo não há nenhuma norma de como deve ser feita a implementação do acesso a esses argumentos, chamados em C de argv[].

Justamente por não ser regulamentada, muitos tutoriais deixam isso de lado e eu passei um bom tempo me perguntando como acessar esses argumentos através de lisp. Na implementação que eu uso (clisp), é extremamente fácil. Salve esse script:

(print ext:*args*)
(print (first ext:*args*))
(print (second ext:*args*))

E rode-o com:

clisp args.lisp arg1 arg2 arg3 arg4

("arg1" "arg2" "arg3" "arg4")
"arg1"
"arg2"

Se você precisar de todos os argumentos passados, pode usar ext:argv também. Lembrando que isso vale para o clisp, outras implementações provavelmente funcionam de outra forma.

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: