Arquivo da categoria ‘common lisp’

Javascript (Ajax) e HTML em Lisp

Domingo, 12 de Outubro de 2008 - Lucindo

Para testar algumas coisas refiz hoje o código do post Common Lisp e Ajax. Desta vez estou usando o patch para o HT-AJAX com suporte e jQuery. Além disso, para gerar código JavaScript uso Parenscript. Assim todo HTML e JS é produzido por s-exps:

(eval-when (:compile-toplevel :load-toplevel :execute)
(defparameter *dependencies*
‘(:asdf […]

Frase do dia

Domingo, 21 de Setembro de 2008 - Lucindo

Só porque esse blog está muito parado:
Eight years to do TeX? How smart can he be? He should have used Lisp.
Kenny Tilton, sobre Donald Knuth

HT-AJAX e jQuery

Domingo, 1 de Junho de 2008 - Lucindo

HT-AJAX (documentação aqui) é uma extenção do Hunchentoot que permite exportar suas funções lisp de modo que elas podem ser acessadas via JavaScript, usando AJAX. Um pequeno exemplo de uso dessa biblioteca está nesse post.
HT-AJAX suporta vários AJAX processors, como Prototype e Dojo, mas não jQuery. Então fiz um pequeno patch adicionando suporte a jQuery.
Download: […]

About State

Sábado, 31 de Maio de 2008 - Lucindo

State: you’re doing it wrong!
Two options for lispers:

Purely functional Lisps (subset of CL or something like Clojure, LFE, etc)
Cells!!!

Hunchentoot e REST, parte 2: suporte a ETags

Domingo, 27 de Abril de 2008 - Lucindo

Bom, esse post é mais um snippet de como implementar um serviço REST usando Hunchentoot. Dessa vez adicionei suporte a ETags no código do outro post. Ficou assim o tratamendo das requisições:
(defvar *data-id* “e8d8993494ffc11:b8e”)
(defun get-data-id (target)
“get the last id for requested data”
*data-id*)

(defmethod handle :around (request-method)
“ETag support for all methods”
[…]

Hunchentoot e REST

Domingo, 20 de Abril de 2008 - Lucindo

Um snippet de teste que eu fiz para um serviço REST usando Hunchentoot.
Usando função genérica é possível fazer um “pattern matching” e a implementação fica parecida com Erlang/YAWS (a vir no BedDB).

(eval-when (:load-toplevel :compile-toplevel :execute)
(require ‘hunchentoot))

(defpackage :ht-rest
(:use :common-lisp :hunchentoot))

(in-package :ht-rest)

(defun add-dispatcher (dispatcher-fn)
“Helper function to add dispatcher functions to dispatch […]

Common Lisp, Erlang e Emacs no Leopard

Sexta, 25 de Janeiro de 2008 - Lucindo

Passo a passo para instalar e configurar Erlang, SBCL e Emacs no Leopard.
Primeiro instale o xcode que vem no CD do Leopard. Em seguida instale o MacPorts.
O MacPorts está com versões bem atualizadas de Erlang (R12B-0) e SBCL (1.0.13):
$ sudo port selfupdate
$ sudo port install erlang +smp +ssl
$ sudo port install sbcl +threads
$ sudo port […]

Netflix Prize

Domingo, 30 de Dezembro de 2007 - Lucindo

Para quem ainda não sabe, o Netflix Prize é uma competição que começou no final do 2006 cujo objetivo é melhorar em 10% o algoritmo de sugestão de filmes da Netflix. Quem conseguir fazer isso recebe o prêmio de U$ 1.000.000.
Bom, fiz um pequeno código esses dias que joga os dados do Netflix Prize no […]

Lisp no IOCCC 1989

Quarta, 12 de Dezembro de 2007 - Lucindo

A submissão campeã do prêmio Best of show do IOCCC de 1989 foi o seguinte interpretador Lisp (aqui modificado para compilar no gcc de hoje):

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define p char*
#define P ,(p)
#define T(E) !strcmp(E,“()”)
#define U return
#define W while
#define X sbrk(199)
#define z atof
#define e isspace
#define D A(_)
#define E S(C(_))
#define B(y) p y(_)p _;{
#define G(y,V) B(y)p i;U […]

Milki: esboço de wiki em Common Lisp

Quarta, 14 de Novembro de 2007 - Lucindo

Eu precisava de uma wiki para ajudar a organizar idéias de um projeto. Depois de conversar com os outros envolvidos eu fiquei de instalar uma em um servidor para começarmos a usar no dia seguinte.
Resolvi que seria uma experiência interessante escrever uma wiki em CL. Como precisávamos da wiki para o dia seguinte eu tinha […]

(blog ‘lucindo) | http://blog.lucindo.com.br