Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleAugust 2023
What Happens When Students Switch (Functional) Languages (Experience Report)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue ICFPArticle No.: 215, Pages 796–812https://doi.org/10.1145/3607857When novice programming students already know one programming language and have to learn another, what issues do they run into? We specifically focus on one or both languages being functional, varying along two axes: syntax and semantics. We report on ...
- research-articleOctober 2021
Runtime and compiler support for HAMTs
DLS 2021: Proceedings of the 17th ACM SIGPLAN International Symposium on Dynamic LanguagesOctober 2021, Pages 48–59https://doi.org/10.1145/3486602.3486931Many functional languages---including Racket, Clojure, and Scala---provide a persistent-map datatype with an implementation based on Hash Array Mapped Tries (HAMTs). HAMTs enable efficient functional lookup, insertion, and deletion operations with a ...
- abstractNovember 2020
Racket’s intermediate language for control (invited talk)
VMIL 2020: Proceedings of the 12th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate LanguagesNovember 2020, Page 1https://doi.org/10.1145/3427765.3432352As a language that is intended for building languages in a composable way, Racket provides an especially rich set of constructs for control, including delimited continuations and efficient reflection on continuations. This talk will explain Racket’s ...
- research-articleMay 2020
Lightweight Automated Structure Inference and Binding of Data Sources to Predefined Data Types
ACMSE '20: Proceedings of the 2020 ACM Southeast ConferenceApril 2020, Pages 71–78https://doi.org/10.1145/3374135.3385284There is great variety and volume of data sources available on the Internet today. Software developers seeking to access such data and incorporate it into their programs have numerous libraries they can use to do so. However, in many contexts, such as ...
Rebuilding racket on chez scheme (experience report)
- Matthew Flatt,
- Caner Derici,
- R. Kent Dybvig,
- Andrew W. Keep,
- Gustavo E. Massaccesi,
- Sarah Spall,
- Sam Tobin-Hochstadt,
- Jon Zeppieri
Proceedings of the ACM on Programming Languages (PACMPL), Volume 3, Issue ICFPArticle No.: 78, Pages 1–15https://doi.org/10.1145/3341642We rebuilt Racket on Chez Scheme, and it works well—as long as we're allowed a few patches to Chez Scheme. DrRacket runs, the Racket distribution can build itself, and nearly all of the core Racket test suite passes. Maintainability and performance ...
- ArticleApril 2018
Context-Oriented Algorithmic Design
ELS2018: Proceedings of the 11th European Lisp Symposium on European Lisp SymposiumApril 2018, Article No.: 13, Pages 84–91Currently, algorithmic approaches are being introduced in several areas of expertise, namely Architecture. Algorithmic Design (AD) is an approach for architecture that allows architects to take advantage of algorithms to produce complex forms for their ...
A unified approach to solving seven programming problems (functional pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 8, Pages 1–26https://doi.org/10.1145/3110252We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
Herbarium Racketensis: a stroll through the woods (functional pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 1, Pages 1–15https://doi.org/10.1145/3110245Domain-specific languages are the ultimate abstraction, dixit Paul Hudak. But what abstraction should we use to build such ultimate abstractions? What is sauce for the goose is sauce for the gander: a language, of course!
Racket is the ultimate ...
- research-articleNovember 2016
A small embedding of logic programming with a simple complete search
DLS 2016: Proceedings of the 12th Symposium on Dynamic LanguagesNovember 2016, Pages 96–107https://doi.org/10.1145/2989225.2989230We present a straightforward, call-by-value embedding of a small logic programming language with a simple complete search. We construct the entire language in 54 lines of Racket---half of which implement unification. We then layer over it, in 43 lines, ...
Also Published in:
ACM SIGPLAN Notices: Volume 52 Issue 2, February 2017 - research-articleJune 2016
Occurrence typing modulo theories
PLDI '16: Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and ImplementationJune 2016, Pages 296–309https://doi.org/10.1145/2908080.2908091We present a new type system combining occurrence typing---a technique previously used to type check programs in dynamically-typed languages such as Racket, Clojure, and JavaScript---with dependent refinement types. We demonstrate that the addition of ...
Also Published in:
ACM SIGPLAN Notices: Volume 51 Issue 6, June 2016 - ArticleMay 2016
Fast Interactive Functional Computer Vision with Racket
ELS2016: Proceedings of the 9th European Lisp Symposium on European Lisp SymposiumMay 2016, Article No.: 13, Pages 97–98Functional programming languages, like Lisp or Racket are known to be general purpose languages with a steep learning curve and wide range of applications. They can be used interactively to solve problems and have inspired other com- parably new ...
- ArticleMay 2016
Refactoring Dynamic Languages
ELS2016: Proceedings of the 9th European Lisp Symposium on European Lisp SymposiumMay 2016, Article No.: 1, Pages 5–12Typically, beginner programmers do not master the style rules of the programming language they are using and, frequently, do not have yet the logical agility to avoid writing redundant code. As a result, although their programs might be correct, they ...
- research-articleApril 2016
Optimizing record data structures in Racket
SAC '16: Proceedings of the 31st Annual ACM Symposium on Applied ComputingApril 2016, Pages 1798–1805https://doi.org/10.1145/2851613.2851732Built-in data structures are a key contributor to the performance of dynamic languages. Record data structures, or records, are one of the common advanced, but not easily optimizable built-in data structures supported by those languages. Records may be ...
- research-articleAugust 2015
Pycket: a tracing JIT for a functional language
- Spenser Bauman,
- Carl Friedrich Bolz,
- Robert Hirschfeld,
- Vasily Kirilichev,
- Tobias Pape,
- Jeremy G. Siek,
- Sam Tobin-Hochstadt
ICFP 2015: Proceedings of the 20th ACM SIGPLAN International Conference on Functional ProgrammingAugust 2015, Pages 22–34https://doi.org/10.1145/2784731.2784740We present Pycket, a high-performance tracing JIT compiler for Racket. Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more. On average, over a standard ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 9, September 2015 - research-articleAugust 2014
Reaching Python from Racket
ILC '14: Proceedings of ILC 2014 on 8th International Lisp ConferenceAugust 2014, Pages 32–38https://doi.org/10.1145/2635648.2635660Racket is a descendant of Scheme, a language that has been widely used to teach computer science. Recently, the Python language has taken over this role, mainly due to its huge standard library and the great number of third-party libraries available. ...