Racket
Racket | |
---|---|
![]() | |
![]() | |
Paradigma | Multiparadigma: funcional, procedural , modular, orientada à objetos, lógica, reflexiva, meta |
Surgido em | 1994 |
Última versão | 8.12[1] (08-02-2024) |
Criado por | PLT Inc. |
Estilo de tipagem | dinâmica, forte, estática |
Dialetos: | Typed Racket, Lazy Racket, Scribble, FrTime, mais |
Influenciada por | Scheme, Eiffel[2] |
Influenciou | Scheme[3] |
Licença | LGPL |
Página oficial | racket-lang.org |
Racket (anteriormente denominada PLT Scheme) é uma linguagem de programação multiparadigma que suporta programação funcional e procedural. Pertence a família de linguagens Scheme/Lisp. Um dos objetivos do projeto é servir como uma plataforma para a criação de linguagem, design e implementação.[4][5] A linguagem é utilizada numa variedade de contextos, tais como scripting, programação de uso geral, a educação de ciência da computação e pesquisa.
A plataforma fornece uma implementação da linguagem Racket (incluindo um sofisticado sistema run-time[6] várias bibliotecas, JIT, e mais) juntamente com um ambiente de desenvolvimento chamado DrRacket (anteriormente denominado DrScheme) escrito em Racket ele mesmo.[7] A IDE e um currículo que acompanha a programação são usados no programa de extensão ProgramByDesign, uma tentativa de transformar a computação e programação em "uma parte indispensável do currículo de artes liberais".[8][9] O núcleo da linguagem é conhecido por seu sistema de macro extensivo que permite a criação de linguagens embutidas e específicas de domínio, construções de linguagem, como classes ou módulos, e dialetos distintos de Racket com diferentes semânticas.[10][11][12][13]
Exemplos de código
[editar | editar código-fonte]Aqui está um programa trivial "Olá mundo":
#lang racket
"Olá mundo!"
A execução deste programa produz o resultado:
- "Olá mundo!"
Aqui está um programa um pouco menos trivial:
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Sierpinski_Racket_example.png/220px-Sierpinski_Racket_example.png)
#lang racket
(require 2htdp/image)
(let sierpinski ([n 8])
(if (zero? n)
(triangle 2 'solid 'red)
(let ([t (sierpinski (- n 1))])
(freeze (above t (beside t t))))))
Este programa, a partir do Racket website, desenha um triângulo de Sierpinski, aninhado em profundidade 8.
Usando a diretiva #lang
, um arquivo de origem pode ser escrito em diferentes dialetos do Racket. Aqui está um exemplo do programa de fatorial em Typed Racket, um dialeto de tipagem estática de Racket:
#lang typed/racket
(: fact (Integer -> Integer))
(define (fact n)
(cond [(zero? n) 1]
[else (* n (fact (- n 1)))]))
Referências
- ↑ Racket blog, Racket v8.12
- ↑ Strickland, T.S.; Fellesisen, Matthias (2010). «DLS 2010: Contracts for First-Class Classes» (PDF)
- ↑ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (2007). «Revised6 Report on the Algorithmic Language Scheme (R6RS)». Scheme Steering Committee. Consultado em 13 de setembro de 2011
- ↑ «Welcome to Racket». Consultado em 15 de agosto de 2011
- ↑ «Dialects of Racket and Scheme». Consultado em 15 de agosto de 2011
- ↑ Flatt; Findler; Krishnamurthi; Felleisen (1999). Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine): International Conference on Functional Programming. [S.l.: s.n.]
- ↑ Findler; Clements; Flanagan; Flatt; Krishnamurthi; Steckler; Felleisen (2001). «DrScheme: A Programming Environment for Scheme» (PDF). Journal of Functional Programming
- ↑ Felleisen; Findler; Flatt; Krishnamurthi (2004). «The TeachScheme! Project: Computing and Programming for Every Student». Journal of Computer Science Education
- ↑ «Overview». Program by Design. Consultado em 17 de agosto de 2011
- ↑ «Macros Matter». 3 de maio de 2007. Consultado em 8 de agosto de 2011
- ↑ Flatt, M.; Findler, R. B.; Felleisen, M. (2006). «Scheme with Classes, Mixins, and Traits» (PDF). Asian Symposium on Programming Languages and Systems
- ↑ Flatt, M.; Felleisen, M. (1998). «Units: Cool Modules for Hot Languages». Programming Language Design and Implementation
- ↑ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). «Languages as Libraries» (PDF). Programming Language Design and Implementation
Ligações externas
[editar | editar código-fonte]- Dr Scheme - Site oficial (site antigo).
- Racket - Site oficial.
- How to design programs - Livro de fundamentos de programação que usa Racket com base