Cat em Lisp e em Perl

Algumas linguagens oferecem um alto nível de abstração, o que agiliza o processo de desenvolvimento de um programa. Eu adoro C, mas se vou abrir um arquivo usando-o, tenho que primeiro abrí-lo, depois verificar eu mesmo se não houve erros. Para facilitar um pouco, acabei criando uma outra função que abre o arquivo e verificar se ocorreu tudo bem:


FILE *xfopen( const char *filename, const char *options )
{
FILE *file = fopen( filename, options );
if ( file == NULL )
exit( EXIT_FAILURE );

return file;
}

Além de depois ter que fazer um loop para imprimir os caracteres, e depois lembrar de fechar o arquivo.

Em Lisp já temos alguns facilitadores, não precisamos mais nos preocupar em verificar se houve um erro e em fechar o arquivo após o uso, mas ainda ficamos presos ao “abre arquivo, faz um loop”.

(with-open-file (content "file"
:direction :input)
(do ((line (read-line content nil)
(read-line content nil)))
((null line))
(format t "~a~%" line)))

Já imaginou fazer isso em cinco linhas? O Perl permite que nós escrevamos um programa parecido com o cat em apenas isso:

#!/usr/bin/perl
open( INFO, 'file' );
@lines = ;
close( INFO );
print @lines;

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: