Aktuální informace FIT ke koronaviru najdete zde.

Ryan Michael Culpepper

Publikace

From Macros to DSLs: The Evolution of Racket

Autoři
Culpepper, R.; Felleisen, M.; Flatt, M.; Krishnamurthi, S.
Rok
2019
Publikováno
3rd Summit on Advances in Programming Languages (SNAPL 2019). Saarbrücken: Dagstuhl Publishing,, 2019. p. 1-19. ISSN 1868-8969. ISBN 978-3-95977-113-9.
Typ
Stať ve sborníku
Anotace
The Racket language promotes a language-oriented style of programming. Developers create many domain-specific languages, write programs in them, and compose these programs via Racket code. This style of programming can work only if creating and composing little languages is simple and effective. While Racket’s Lisp heritage might suggest that macros suffice, its design team discovered significant shortcomings and had to improve them in many ways. This paper presents the evolution of Racket’s macro system, including a false start, and assesses its current state.

Pattern-Based S-Expression Rewriting in Emacs

Autoři
Rok
2019
Publikováno
Proceedings of the 12th European Lisp Symposium {(ELS} 2019. New York: ACM, 2019. p. 8-10. ISBN 978-2-9557474-3-8.
Typ
Stať ve sborníku
Anotace
sexp-rewrite is an Emacs library for doing pattern-based rewriting of S-expression-structured code—ie, code in Lisp, Scheme, and Racket. The library provides a simple but powerful pattern language that enables users to define rewriting rules (called “tactics”) and auxiliary nonterminals.

Syntax Templates in Racket

Autoři
Rok
2019
Publikováno
Scheme and Functional Programming Workshop (Scheme '19). Birmingham: University of Alabama at Birmingham, 2019.
Typ
Stať ve sborníku
Anotace
One foundation of Scheme macro systems is the notation of syntax patterns and templates. Patterns are used to match and destructure terms, and templates are used to construct new terms. This paper presents extensions to Racket’s template notation to support template splicing, conditional generation, and template metafunctions. The new template features complement syntax-parse’s previous extensions to the pattern-matching notation.

Contextual Equivalence fo probabilistic languages

Autoři
Culpepper, R.; Wand, M.; Cobb, A.; Giannakopoulos, T.
Rok
2018
Publikováno
Journal Proceedings of the ACM on Programming Languages,Volume 2, Issue ICFP. New York: ACM, 2018. ISSN 2475-1421.
Typ
Stať ve sborníku
Anotace
We present a complete reasoning principle for contextual equivalence in an untyped probabilistic language. The language includes continuous (real-valued) random variables, conditionals, and scoring. It also includes recursion, since the standard call-by-value fixpoint combinator is expressible. We demonstrate the usability of our characterization by proving several equivalence schemas, including familiar facts from lambda calculus as well as results specific to probabilistic programming. In particular, we use it to prove that reordering the random draws in a probabilistic program preserves contextual equivalence. This allows us to show, for example, that (let x = e1 in let y = e2 in e0) =ctx (let y = e2 in let x = e1 in e0) (provided x does not occur free in e2 and y does not occur free in e1) despite the fact that e1 and e2 may have sampling and scoring effects.