Racket

Origem: Wikipédia, a enciclopédia livre.
Racket
DrRacket no Ubuntu GNU/Linux
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:

O resultado deste programa, tal como mostrado em DrRacket
#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

  1. Racket blog, Racket v8.12
  2. Strickland, T.S.; Fellesisen, Matthias (2010). «DLS 2010: Contracts for First-Class Classes» (PDF) 
  3. 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 
  4. «Welcome to Racket». Consultado em 15 de agosto de 2011 
  5. «Dialects of Racket and Scheme». Consultado em 15 de agosto de 2011 
  6. 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.] 
  7. Findler; Clements; Flanagan; Flatt; Krishnamurthi; Steckler; Felleisen (2001). «DrScheme: A Programming Environment for Scheme» (PDF). Journal of Functional Programming 
  8. Felleisen; Findler; Flatt; Krishnamurthi (2004). «The TeachScheme! Project: Computing and Programming for Every Student». Journal of Computer Science Education 
  9. «Overview». Program by Design. Consultado em 17 de agosto de 2011 
  10. «Macros Matter». 3 de maio de 2007. Consultado em 8 de agosto de 2011 
  11. Flatt, M.; Findler, R. B.; Felleisen, M. (2006). «Scheme with Classes, Mixins, and Traits» (PDF). Asian Symposium on Programming Languages and Systems 
  12. Flatt, M.; Felleisen, M. (1998). «Units: Cool Modules for Hot Languages». Programming Language Design and Implementation 
  13. 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]

Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.