Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
A parallel virtual machine for efficient scheme compilation
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Lambda, the ultimate label or a simple optimizing compiler for Scheme
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Syntactic abstraction in Scheme
Lisp and Symbolic Computation
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The Java syntactic extender (JSE)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Definition of Standard ML
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Higher-Order and Symbolic Computation
Compiling Haskell by Program Transformation: A Report from the Trenches
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Bigloo: A Portable and Optimizing Compiler for Strict Functional Languages
SAS '95 Proceedings of the Second International Symposium on Static Analysis
Linguistic reuse
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Laziness without all the hard work: combining lazy and strict languages for teaching
Proceedings of the 2005 workshop on Functional and declarative programming in education
Static analysis for syntax objects
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Interlanguage migration: from scripts to programs
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Implementation and use of the PLT scheme Web server
Higher-Order and Symbolic Computation
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Xoc, an extension-oriented compiler for systems programming
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Concurrency, Graphs and Models
Building language towers with ziggurat
Journal of Functional Programming
Practical Variable-Arity Polymorphism
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Scribble: closing the book on ad hoc documentation tools
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Revised6 report on the algorithmic language scheme
Journal of Functional Programming
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
Science of Computer Programming
Logical types for untyped languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Syntactic abstraction in component interfaces
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Scheme with classes, mixins, and traits
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Multilingual component programming in racket
Proceedings of the 10th ACM international conference on Generative programming and component engineering
Growing a language environment with editor libraries
Proceedings of the 10th ACM international conference on Generative programming and component engineering
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Streams that compose using macros that oblige
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Layout-sensitive language extensibility with SugarHaskell
Proceedings of the 2012 Haskell Symposium
Socio-PLT: principles for programming language adoption
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Grace: the absence of (inessential) difficulty
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Optimization coaching: optimizers learn to communicate with programmers
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Language composition untangled
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Teaching garbage collection without implementing compiler or interpreters
Proceeding of the 44th ACM technical symposium on Computer science education
Terra: a multi-stage language for high-performance computing
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Modules as gradually-typed objects
Proceedings of the 7th Workshop on Dynamic Languages and Applications
Scala macros: let our powers combine!: on how rich syntax and static types work with metaprogramming
Proceedings of the 4th Workshop on Scala
Towards a tight integration of a functional web client language into Scala
Proceedings of the 4th Workshop on Scala
Typed syntactic meta-programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Implementing a scripting language parser with self-extensible syntax
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
An object-oriented approach to language compositions for software language engineering
Journal of Systems and Software
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Forge: generating a high performance DSL implementation from a declarative specification
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Spiral in scala: towards the systematic construction of generators for performance libraries
Proceedings of the 12th international conference on Generative programming: concepts & experiences
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
Programming language design benefits from constructs for extending the syntax and semantics of a host language. While C's string-based macros empower programmers to introduce notational shorthands, the parser-level macros of Lisp encourage experimentation with domain-specific languages. The Scheme programming language improves on Lisp with macros that respect lexical scope. The design of Racket---a descendant of Scheme---goes even further with the introduction of a full-fledged interface to the static semantics of the language. A Racket extension programmer can thus add constructs that are indistinguishable from "native" notation, large and complex embedded domain-specific languages, and even optimizing transformations for the compiler backend. This power to experiment with language design has been used to create a series of sub-languages for programming with first-class classes and modules, numerous languages for implementing the Racket system, and the creation of a complete and fully integrated typed sister language to Racket's untyped base language. This paper explains Racket's language extension API via an implementation of a small typed sister language. The new language provides a rich type system that accommodates the idioms of untyped Racket. Furthermore, modules in this typed language can safely exchange values with untyped modules. Last but not least, the implementation includes a type-based optimizer that achieves promising speedups. Although these extensions are complex, their Racket implementation is just a library, like any other library, requiring no changes to the Racket implementation.