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.

LISP: Introdução à função format I

A função format pode parecer estranha à primeira vista. Quem nunca programou faz cara de que não entendeu e quem está acostumado com o printf do C fica procurando %s ou %g ou %d ou …
Leia o resto deste post »

Publicado em Lisp. Tags: , . 1 Comentário »