
Outro dia procurando por um bom interpretador/compilador para
R⁶RS, encontrei algo muito mais interessante…
Encontrei o
RAD-
IDE Racket, antigo DrScheme.
O interessante do Racket é que, além de ser um interpretador e compilador de R⁵RS e R⁶RS, também suporta – aliás, por padrão – uma linguagem de programação baseada em Scheme, também chamada Racket – antiga PLT Scheme –, muito poderosa; também traz um ambiente de desenvolvimento chamado DrRacket.
Quando você escreve um
script em Scheme, a primeira linha indica a versão que você pretende usar:
#!r4rs
Ou:
#!r5rs
Ou:
#!r6rs
Se o interpretador suportar a versão, ela será usada. Já no caso do Racket, outras opções são suportadas, como o padrão:
#lang racket
Para a linguagem padrão.
[update 2011-10-18]
Um script R⁶RS começa sempre com um import, por exemplo:
#!r6rs
(import (rnrs))
Você pode ter as funções de R⁶RS em um código Racket (PLT), basta usar:
#lang racket
(require rnrs)
O módulo rnrs traz toda a funcionalidade de R⁶RS.
Outra coisa legal da linguagem Racket é que, em vez de lambda, você pode usar λ (⌘\ / C-\).
[/update]
E até mesmo:
#lang planet jaymccarthy/c
Para
linguagem de programação C – uma opção de C interpretado!
Para tanto você precisa ter em seu
~/.racketrc o seguinte conteúdo:
#lang racket
(require (planet jaymccarthy/c:1:2))
Para instalar o módulo C, você pode executar no
widget de definições (⌘D no Mac OS X,
C-d no Windows e no GNU/Linux):
> (require (planet "main.rkt" ("jaymccarthy" "c.plt" 1 2)))
[update 2011-10-18]
Eu acho que você não precise instalar o módulo, basta colocar sua chamada em ~/.racketrc e, na primeira execução, o módulo será automaticamente baixado e instalado.
Só não posso afirmar com certeza porque eu já havia instalado ele antes.
No Windows, o arquivo é racketrc.rktl e deve ficar no diretório de perfil do usuário.
[/update]
Programação visual
Para facilitar a vida de quem precisa desenvolver aplicações gráficas, você pode usar o
MrEd Designer.
Para instalá-lo, execute no
widget de definições do DrRacket:
> (require (planet orseau/mred-designer:3:7))
Para iniciar o processo, use (recomendo criar um
alias):
bash$ gracket -e '(require (planet orseau/mred-designer:3:7))'
Olá Mundo!
Vamos criar um programa simples. Primeiro abra o MrEd Designer.
[update 2011-10-19]
Troquei os nomes dos widgets pelos nomes usados no código Racket.
[/update]
Na janela
Hierarchy selecione
project-XXX.
Na janela
MrEd Designer, na seção
Containers, clique no primeiro botão,
frame%.
Vai surgir uma janela pequena e, na hierarquia do projeto, um
frame% (
frame-XXXX) sob o projeto.
Na janela
Hierarchy selecione o
frame% que apareceu e repare que a janela
Properties mudou.
Em
Properties, mude o valor de
label (que está
Frame) para
Olá Mundo! e clique em
Save & Update Preview.
Veja que o título da janela mudou.
Agora, ainda com o
frame% selecionado, na janela
MrEd Designer, na seção
Controls, clique no primeiro botão,
message%. Repare que surgiu um elemento
message% (
message-XXXX) na hieraquia, sob o
frame%.
Selecione o novo elemento e mude o
label (em
Properties) para
Olá Mundo!.
Clique em
Choose Font… e escolha uma fonte maior, sugiro Arial Bold 20, e clique em
Ok.
Clique novamente em
Save & Update Preview.
Selecione de novo o
frame% em
Hierarchy e, em
MrEd Designer →
Controls, clique no segundo botão,
button%.
Surgirá um elemento
button% (
button-XXXX) sob o
frame%. Selecione-o.
Mude o
label para
Ok e a fonte para Arial 14. Clique em
Save & Update Preview.
Agora, na janela
MrEd Designer, no menu
File clique em
Save Project – ou pressione ⌘S /
C-s. Escolha o diretório e salve como
ola.
Depois clique em
File →
Generate Scheme File… – ⌘F5 no Mac. Salve como
ola.ss no mesmo diretório onde você salvou o projeto.
Repare que você terá dois arquivos:
ola.*.med (o projeto) e
ola.ss (o código).
Abra agora o arquivo
ola.ss no DrRacket:
bash$ drracket ola.ss
Procure a seguinte linha:
(button-XXXX-callback (lambda (button control-event) (void))))
Onde
XXXX é uma sequência de dígitos decimais.
Mude para:
(button-XXXX-callback (lambda (button control-event) (displayln "Olá Mundo!"))))
Veja a linha 8 do
script:
;;; Call (project-XXX-init) with optional arguments to this module
Acrescente a linha sugerida ao final do arquivo:
(project-XXX-init)
Salve o arquivo – ⌘S /
C-s – depois rode/corra o programa – ⌘T /
C-t – e veja a mágica.
Para executar o
script sem precisar levantar o DrRacket, use o comando:
bash$ gracket ola.ss
Se preferir tornar o
script executável, acrescente a primeira linha:
#!/usr/bin/env gracket
Outros recursos
Você pode encontrar uma série de módulos interessantes no
PLaneT, como facilidades
web, conexão a banco de dados,
bzlib, Plan9, JSON, etc.
Sobre construção de aplicações
web, leia
Continue: Web Applications in Racket.
[]’s
Cacilhας, La Batalema