Contact The DL Team Contact Us | Switch to tabbed view

top of pageABSTRACT

We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.

top of pageSOURCE MATERIALS

AVAILABLE FOR DOWNLOAD
PDFPDF (258 KB)  
APPENDICES and SUPPLEMENTS
ZipAuxiliary Archive   This is a reusable artifact for the paper: "A Unified Approach to Solving Seven Programming Problems (Functional Pearl)" The artifact contains a self-contained Docker image (though you need to install Docker) that can be used to run examples from the paper, as well as experiment with new formulations. Documentation is provided in the "ArtifactOverview.md" file.
APPEARS IN
Performance
Software

top of pageAUTHORS



Author image not provided  William E. Byrd

No contact information provided yet.

Bibliometrics: publication history
Publication years2005-2017
Publication count9
Citation Count24
Available for download4
Downloads (6 Weeks)115
Downloads (12 Months)3,373
Downloads (cumulative)3,539
Average downloads per article884.75
Average citations per article2.67
View colleagues of William E. Byrd


Author image not provided  Michael Ballantyne

No contact information provided yet.

Bibliometrics: publication history
Publication years2017-2017
Publication count1
Citation Count0
Available for download1
Downloads (6 Weeks)102
Downloads (12 Months)3,272
Downloads (cumulative)3,272
Average downloads per article3,272.00
Average citations per article0.00
View colleagues of Michael Ballantyne


Author image not provided  Gregory Rosenblatt

No contact information provided yet.

Bibliometrics: publication history
Publication years2017-2017
Publication count1
Citation Count0
Available for download1
Downloads (6 Weeks)102
Downloads (12 Months)3,272
Downloads (cumulative)3,272
Average downloads per article3,272.00
Average citations per article0.00
View colleagues of Gregory Rosenblatt


Author image not provided  Matthew Might

 matt.might.net
 mightatcs.utah.edu
Bibliometrics: publication history
Publication years2006-2017
Publication count41
Citation Count282
Available for download24
Downloads (6 Weeks)208
Downloads (12 Months)4,419
Downloads (cumulative)11,305
Average downloads per article471.04
Average citations per article6.88
View colleagues of Matthew Might

top of pageREFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
William E. Byrd and Daniel P. Friedman. 2006. From Variadic Functions to Variadic Relations: A miniKanren Perspective. In Proceedings of the 2006 Scheme and Functional Programming Workshop (University of Chicago Technical Report TR-2006-06), Robby Findler (Ed.). 105–117.
2
 
3
Daniel P. Friedman, William E. Byrd, and Oleg Kiselyov. 2005. The Reasoned Schemer. The MIT Press, Cambridge, MA, USA.
 
4
Douglas R. Hofstadter. 1979. Gödel, Escher, Bach : an Eternal Golden Braid. Basic, New York, NY, USA.
5
6
 
7
Stephen Cole Kleene. 1952. Introduction to Metamathematics. North-Holland, Amsterdam.
8
 
9
Matt Might. 2013. 99 ways to say ’(I love you) in Racket. http://matt.might.net/articles/i- love- you- in- racket/ . (February 2013). Accessed: 2017-02-28.

top of pageCITED BY

Citings are not available

top of pageINDEX TERMS

The ACM Computing Classification System (CCS rev.2012)

Note: Larger/Darker text within each node indicates a higher relevance of the materials to the taxonomic classification.

top of pagePUBLICATION

Title Proceedings of the ACM on Programming Languages table of contents
Volume 1 Issue ICFP, September 2017
Article No. 8
Publication Date2017-08-29 (yyyy-mm-dd)
Funding Sources Defense Advanced Research Projects Agency
National Science Foundation
Sponsor SIGPLAN ACM Special Interest Group on Programming Languages
PublisherACM New York, NY, USA
EISSN: 2475-1421 doi>10.1145/3110252
Conference ICFPInternational Conference on Functional Programming ICFP logo
Overall Acceptance Rate 524 of 1,691 submissions, 31%
Year Submitted Accepted Rate
ICFP '96 83 25 30%
ICFP '97 78 25 32%
ICFP '98 77 30 39%
ICFP '99 81 25 31%
ICFP '00 110 24 22%
ICFP '01 66 23 35%
ICFP '02 76 24 32%
ICFP '03 95 24 25%
ICFP '04 80 21 26%
ICFP '05 87 26 30%
ICFP '06 74 24 32%
ICFP '07 103 26 25%
ICFP '08 99 35 35%
ICFP '09 85 26 31%
ICFP '10 99 33 33%
ICFP '11 92 33 36%
ICFP '12 88 32 36%
ICFP '13 133 40 30%
ICFP '14 85 28 33%
Overall 1,691 524 31%

APPEARS IN
Performance
Software

top of pageREVIEWS


Reviews are not available for this item
Computing Reviews logo

top of pageCOMMENTS

Be the first to comment To Post a comment please sign in or create a free Web account

top of pageTable of Contents

Proceedings of the ACM on Programming Languages

Volume 1 Issue ICFP, September 2017 AKA: ICFP 2017 Papers
previousprevious proceeding |next proceeding next

Table of Contents
no previous issue |next issue next
Editorial message
Philip Wadler
Article No.: 1e
doi>10.1145/3139957
Full text: PDFPDF

Welcome to the Proceedings of the ACM on Programming Languages (PACMPL)!
expand
SECTION: Art and Education
Herbarium Racketensis: a stroll through the woods (functional pearl)
Vincent St-Amour, Daniel Feltey, Spencer P. Florence, Shu-Hung You, Robert Bruce Findler
Article No.: 1
doi>10.1145/3110245
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Domain-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 abstraction-abstraction, ...
expand
Testing and debugging functional reactive programming
Ivan Perez, Henrik Nilsson
Article No.: 2
doi>10.1145/3110246
Full text: PDFPDF

Many types of interactive applications, including video games, raise particular challenges when it comes to testing and debugging. Reasons include de-facto lack of reproducibility and difficulties of automatically generating suitable test data. This ...
expand
Lock-step simulation is child's play (experience report)
Joachim Breitner, Chris Smith
Article No.: 3
doi>10.1145/3110247
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Implementing multi-player networked games by broadcasting the player’s input and letting each client calculate the game state -- a scheme known as *lock-step simulation* – is an established technique. However, ensuring that every client ...
expand
Scaling up functional programming education: under the hood of the OCaml MOOC
Benjamin Canou, Roberto Di Cosmo, Grégoire Henry
Article No.: 4
doi>10.1145/3110248
Full text: PDFPDF

This article describes the key innovations used in the massive open online course ``Introduction to Functional Programming using OCaml'' that has run since the fall semester of 2015. A fully in-browser development environment with an integrated ...
expand
SECTION: Functional Programming Techniques
Faster coroutine pipelines
Michael Spivey
Article No.: 5
doi>10.1145/3110249
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Coroutine pipelines provide an attractive structuring mechanism for complex programs that process streams of data, with the advantage over lazy streams that both ends of a pipeline may interact with the I/O system, as may processes in the middle. Two ...
expand
A pretty but not greedy printer (functional pearl)
Jean-Philippe Bernardy
Article No.: 6
doi>10.1145/3110250
Full text: PDFPDF

This paper proposes a new specification of pretty printing which is stronger than the state of the art: we require the output to be the shortest possible, and we also offer the ability to align sub-documents at will. We argue that our specification ...
expand
Generic functional parallel algorithms: scan and FFT
Conal Elliott
Article No.: 7
doi>10.1145/3110251
Full text: PDFPDF

Parallel programming, whether imperative or functional, has long focused on arrays as the central data type. Meanwhile, typed functional programming has explored a variety of data types, including lists and various forms of trees. Generic functional ...
expand
A unified approach to solving seven programming problems (functional pearl)
William E. Byrd, Michael Ballantyne, Gregory Rosenblatt, Matthew Might
Article No.: 8
doi>10.1145/3110252
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
expand
SECTION: Applications
Prototyping a query compiler using Coq (experience report)
Joshua S. Auerbach, Martin Hirzel, Louis Mandel, Avraham Shinnar, Jérôme Siméon
Article No.: 9
doi>10.1145/3110253
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Designing and prototyping new features is important in many industrial projects. Functional programming and formal verification tools can prove valuable for that purpose, but lead to challenges when integrating with existing product code or when planning ...
expand
A framework for adaptive differential privacy
Daniel Winograd-Cort, Andreas Haeberlen, Aaron Roth, Benjamin C. Pierce
Article No.: 10
doi>10.1145/3110254
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Differential privacy is a widely studied theory for analyzing sensitive data with a strong privacy guarantee—any change in an individual’s data can have only a small statistical effect on the result—and a growing number of programming ...
expand
Symbolic conditioning of arrays in probabilistic programs
Praveen Narayanan, Chung-chieh Shan
Article No.: 11
doi>10.1145/3110255
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Probabilistic programming systems make machine learning more modular by automating inference. Recent work by Shan and Ramsey makes inference more modular by automating conditioning. Their technique uses a symbolic program transformation ...
expand
SECTION: Effects
Abstracting definitional interpreters (functional pearl)
David Darais, Nicholas Labich, Phúc C. Nguyen, David Van Horn
Article No.: 12
doi>10.1145/3110256
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

In this functional pearl, we examine the use of definitional interpreters as a basis for abstract interpretation of higher-order programming languages. As it turns out, definitional interpreters, especially those written in monadic style, can provide ...
expand
On the expressive power of user-defined effects: effect handlers, monadic reflection, delimited control
Yannick Forster, Ohad Kammar, Sam Lindley, Matija Pretnar
Article No.: 13
doi>10.1145/3110257
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

We compare the expressive power of three programming abstractions for user-defined computational effects: Plotkin and Pretnar's effect handlers, Filinski's monadic reflection, and delimited control without answer-type-modification. This comparison ...
expand
Imperative functional programs that explain their work
Wilmer Ricciotti, Jan Stolarek, Roly Perera, James Cheney
Article No.: 14
doi>10.1145/3110258
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Program slicing provides explanations that illustrate how program outputs were produced from inputs. We build on an approach introduced in prior work, where dynamic slicing was defined for pure higher-order functional programs as a Galois connection ...
expand
Effect-driven QuickChecking of compilers
Jan Midtgaard, Mathias Nygaard Justesen, Patrick Kasting, Flemming Nielson, Hanne Riis Nielson
Article No.: 15
doi>10.1145/3110259
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional  
Full text: PDFPDF

How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs ...
expand
SECTION: Low-Level and Systems Programming
Persistence for the masses: RRB-vectors in a systems language
Juan Pedro Bolívar Puente
Article No.: 16
doi>10.1145/3110260
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Relaxed Radix Balanced Trees (RRB-Trees) is one of the latest members in a family of persistent tree based data-structures that combine wide branching factors with simple and relatively flat structures. Like the battle-tested immutable sequences of ...
expand
Verified low-level programming embedded in F*
Jonathan Protzenko, Jean-Karim Zinzindohoué, Aseem Rastogi, Tahina Ramananandro, Peng Wang, Santiago Zanella-Béguelin, Antoine Delignat-Lavaud, Cătălin Hriţcu, Karthikeyan Bhargavan, Cédric Fournet, Nikhil Swamy
Article No.: 17
doi>10.1145/3110261
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

We present Low*, a language for low-level programming and verification, and its application to high-assurance optimized cryptographic libraries. Low* is a shallow embedding of a small, sequential, well-behaved subset of C in F*, a dependently- typed ...
expand
Verifying efficient function calls in CakeML
Scott Owens, Michael Norrish, Ramana Kumar, Magnus O. Myreen, Yong Kiam Tan
Article No.: 18
doi>10.1145/3110262
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable  
Full text: PDFPDF

We have designed an intermediate language (IL) for the CakeML compiler that supports the verified, efficient compilation of functions and calls. Verified compilation steps include batching of multiple curried arguments, detecting calls to statically ...
expand
Better living through operational semantics: an optimizing compiler for radio protocols
Geoffrey Mainland
Article No.: 19
doi>10.1145/3110263
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Software-defined radio (SDR) promises to bring the flexibility and rapid iterative workflow of software to radio protocol design. Many factors make achieving this promise challenging, not least of which are the high data rates and timing requirements ...
expand
SECTION: Foundations of Higher-Order Programming
Foundations of strong call by need
Thibaut Balabonski, Pablo Barenbaum, Eduardo Bonelli, Delia Kesner
Article No.: 20
doi>10.1145/3110264
Full text: PDFPDF

We present a call-by-need strategy for computing strong normal forms of open terms (reduction is admitted inside the body of abstractions and substitutions, and the terms may contain free variables), which guarantees that arguments are only evaluated ...
expand
A relational logic for higher-order programs
Alejandro Aguirre, Gilles Barthe, Marco Gaboardi, Deepak Garg, Pierre-Yves Strub
Article No.: 21
doi>10.1145/3110265
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

Relational program verification is a variant of program verification where one can reason about two programs and as a special case about two executions of a single program on different inputs. Relational program verification can be used for reasoning ...
expand
How to prove your calculus is decidable: practical applications of second-order algebraic theories and computation
Makoto Hamana
Article No.: 22
doi>10.1145/3110266
Full text: PDFPDF

We present a general methodology of proving the decidability of equational theory of programming language concepts in the framework of second-order algebraic theories. We propose a Haskell-based analysis tool SOL, Second-Order Laboratory, which assists ...
expand
No-brainer CPS conversion (functional pearl)
Milo Davis, William Meehan, Olin Shivers
Article No.: 23
doi>10.1145/3110267
Full text: PDFPDF

Algorithms that convert direct-style λ-calculus terms to their equivalent terms in continuation-passing style (CPS) typically introduce so-called “administrative redexes:” useless artifacts of the conversion that must be cleaned ...
expand
SECTION: Tools for Verification
Kami: a platform for high-level parametric hardware specification and its modular verification
Joonwon Choi, Muralidaran Vijayaraghavan, Benjamin Sherman, Adam Chlipala, Arvind
Article No.: 24
doi>10.1145/3110268
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

It has become fairly standard in the programming-languages research world to verify functional programs in proof assistants using induction, algebraic simplification, and rewriting. In this paper, we introduce Kami, a Coq library that enables similar ...
expand
SpaceSearch: a library for building and verifying solver-aided tools
Konstantin Weitz, Steven Lyubomirsky, Stefan Heule, Emina Torlak, Michael D. Ernst, Zachary Tatlock
Article No.: 25
doi>10.1145/3110269
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable  
Full text: PDFPDF

Many verification tools build on automated solvers. These tools reduce problems in a specific application domain (e.g., compiler optimization validation) to queries that can be discharged with a highly optimized solver. But the correctness of the reductions ...
expand
Local refinement typing
Benjamin Cosman, Ranjit Jhala
Article No.: 26
doi>10.1145/3110270
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable  
Full text: PDFPDF

We introduce the FUSION algorithm for local refinement type inference, yielding a new SMT-based method for verifying programs with polymorphic data types and higher-order functions. FUSION is concise as the programmer need only write signatures for ...
expand
SECTION: Program Construction
Compiling to categories
Conal Elliott
Article No.: 27
doi>10.1145/3110271
Full text: PDFPDF

It is well-known that the simply typed lambda-calculus is modeled by any cartesian closed category (CCC). This correspondence suggests giving typed functional programs a variety of interpretations, each corresponding to a different category. A convenient ...
expand
Visitors unchained
François Pottier
Article No.: 28
doi>10.1145/3110272
Full text: PDFPDF

Traversing and transforming abstract syntax trees that involve name binding is notoriously difficult to do in a correct, concise, modular, customizable manner. We address this problem in the setting of OCaml, a functional programming language equipped ...
expand
Staged generic programming
Jeremy Yallop
Article No.: 29
doi>10.1145/3110273
Full text: PDFPDF

Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write repetitive code, but typically introduce significant performance overheads. This leaves programmers with the regrettable choice between writing succinct but slow ...
expand
SECTION: Domain-Specific Languages
Super 8 languages for making movies (functional pearl)
Leif Andersen, Stephen Chang, Matthias Felleisen
Article No.: 30
doi>10.1145/3110274
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

The Racket doctrine tells developers to narrow the gap between the terminology of a problem domain and general programming constructs by creating languages instead of just plain programs. This pearl illustrates this point with the creation of a relatively ...
expand
SECTION: Dependently Typed Programming
A specification for dependent types in Haskell
Stephanie Weirich, Antoine Voizard, Pedro Henrique Azevedo de Amorim, Richard A. Eisenberg
Article No.: 31
doi>10.1145/3110275
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

We propose a core semantics for Dependent Haskell, an extension of Haskell with full-spectrum dependent types. Our semantics consists of two related languages. The first is a Curry-style dependently-typed language with nontermination, irrelevant arguments, ...
expand
Parametric quantifiers for dependent type theory
Andreas Nuyts, Andrea Vezzosi, Dominique Devriese
Article No.: 32
doi>10.1145/3110276
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Polymorphic type systems such as System F enjoy the parametricity property: polymorphic functions cannot inspect their type argument and will therefore apply the same algorithm to any type they are instantiated on. This idea is formalized mathematically ...
expand
Normalization by evaluation for sized dependent types
Andreas Abel, Andrea Vezzosi, Theo Winterhalter
Article No.: 33
doi>10.1145/3110277
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Sized types have been developed to make termination checking more perspicuous, more powerful, and more modular by integrating termination into type checking. In dependently-typed proof assistants where proofs by induction are just recursive functional ...
expand
A metaprogramming framework for formal verification
Gabriel Ebner, Sebastian Ullrich, Jared Roesch, Jeremy Avigad, Leonardo de Moura
Article No.: 34
doi>10.1145/3110278
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

We describe the metaprogramming framework currently used in Lean, an interactive theorem prover based on dependent type theory. This framework extends Lean's object language with an API to some of Lean's internal structures and procedures, ...
expand
SECTION: Contracts and Sessions
Chaperone contracts for higher-order sessions
Hernán Melgratti, Luca Padovani
Article No.: 35
doi>10.1145/3110279
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Contracts have proved to be an effective mechanism that helps developers in identifying those modules of a program that violate the contracts of the functions and objects they use. In recent years, sessions have established as a key mechanism for realizing ...
expand
Whip: higher-order contracts for modern services
Lucas Waye, Stephen Chong, Christos Dimoulas
Article No.: 36
doi>10.1145/3110280
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Modern service-oriented applications forgo semantically rich protocols and middleware when composing services. Instead, they embrace the loosely-coupled development and deployment of services that communicate via simple network protocols. Even though ...
expand
Manifest sharing with session types
Stephanie Balzer, Frank Pfenning
Article No.: 37
doi>10.1145/3110281
Full text: PDFPDF

Session-typed languages building on the Curry-Howard isomorphism between linear logic and session-typed communication guarantee session fidelity and deadlock freedom. Unfortunately, these strong guarantees exclude many naturally occurring programming ...
expand
Gradual session types
Atsushi Igarashi, Peter Thiemann, Vasco T. Vasconcelos, Philip Wadler
Article No.: 38
doi>10.1145/3110282
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Session types are a rich type discipline, based on linear types, that lift the sort of safety claims that come with type systems to communications. However, web-based applications and micro services are often written in a mix of languages, with type ...
expand
SECTION: Integrating Static and Dynamic Typing
Theorems for free for free: parametricity, with and without types
Amal Ahmed, Dustin Jamner, Jeremy G. Siek, Philip Wadler
Article No.: 39
doi>10.1145/3110283
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

The polymorphic blame calculus integrates static typing, including universal types, with dynamic typing. The primary challenge with this integration is preserving parametricity: even dynamically-typed code should satisfy it once it has been cast to ...
expand
On polymorphic gradual typing
Yuu Igarashi, Taro Sekiyama, Atsushi Igarashi
Article No.: 40
doi>10.1145/3110284
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

We study an extension of gradual typing—a method to integrate dynamic typing and static typing smoothly in a single language—to parametric polymorphism and its theoretical properties, including conservativity of typing and semantics over ...
expand
Gradual typing with union and intersection types
Giuseppe Castagna, Victor Lanvin
Article No.: 41
doi>10.1145/3110285
Artifacts:   Artifacts Available Artifacts Available  
Full text: PDFPDF

We propose a type system for functional languages with gradual types and set-theoretic type connectives and prove its soundness. In particular, we show how to lift the definition of the domain and result type of an application from non-gradual types ...
expand
SECTION: Inference and Analysis
Constrained type families
J. Garrett Morris, Richard A. Eisenberg
Article No.: 42
doi>10.1145/3110286
Artifacts:   Artifacts Evaluated - Functional Artifacts Evaluated - Functional   Artifacts Available Artifacts Available  
Full text: PDFPDF

We present an approach to support partiality in type-level computation without compromising expressiveness or type safety. Existing frameworks for type-level computation either require totality or implicitly assume it. For example, type families in ...
expand
Automating sized-type inference for complexity analysis
Martin Avanzini, Ugo Dal Lago
Article No.: 43
doi>10.1145/3110287
Full text: PDFPDF

This paper introduces a new methodology for the complexity analysis of higher-order functional programs, which is based on three ingredients: a powerful type system for size analysis and a sound type inference procedure for it, a ticking monadic transformation ...
expand
Inferring scope through syntactic sugar
Justin Pombrio, Shriram Krishnamurthi, Mitchell Wand
Article No.: 44
doi>10.1145/3110288
Artifacts:   Artifacts Evaluated - Reusable Artifacts Evaluated - Reusable   Artifacts Available Artifacts Available  
Full text: PDFPDF

Many languages use syntactic sugar to define parts of their surface language in terms of a smaller core. Thus some properties of the surface language, like its scoping rules, are not immediately evident. Nevertheless, IDEs, refactorers, and other ...
expand

Powered by The ACM Guide to Computing Literature


The ACM Digital Library is published by the Association for Computing Machinery. Copyright © 2018 ACM, Inc.
Terms of Usage   Privacy Policy   Code of Ethics   Contact Us