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:
#!r4rsOu:
#!r5rsOu:
#!r6rsSe 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 racketPara a linguagem padrão.
[update 2011-10-18]
Um script R⁶RS começa sempre com umimport, 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ódulornrstraz toda a funcionalidade de R⁶RS.
Outra coisa legal da linguagem Racket é que, em vez delambda, você pode usarλ(⌘\ / C-\).
[/update]
E até mesmo:
#lang planet jaymccarthy/cPara 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~/.racketrce, 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.rktle 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.ssProcure 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 moduleAcrescente 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.ssSe preferir tornar o script executável, acrescente a primeira linha:
#!/usr/bin/env gracketOutros 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
CC-BY: Os textos deste blog podem ser reporduzidos contanto que sejam informados autor e origem.