segunda-feira, 8 de março de 2010

Scheme sem parênteses

Para aqueles que não usam Scheme só por causa dos parênteses: seus problemas acabaram! Basta substituir os parênteses por colchetes.

[define [fatorial n]
[if [< n 2]
1
[* n [fatorial [- n 1]]]]]

[display [fatorial 5]]
[newline]


Exemplos com algumas implementações:

Chicken:
$ csi -s fatorial.scm 
120


Gambit:
$ gsi fatorial.scm 
120


PLT:
$ mzscheme -f fatorial.scm 
120


Ypsilon:
$ ypsilon fatorial.scm 
120


Embora [ e ] sejam caracteres reservados em R5RS, muitas implementações os utilizam como sinônimos para parênteses. É comum a prática de uso de colchetes para associações entre variáveis e valores em formas let. Exemplo:

(let ([a 3]
[b 4]
[c 5])
(+ a b c))


Eu, particularmente, não costumo usar colchetes como sinônimo de parênteses, mas já vi muito código que usa.

Nenhum comentário: