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 2022
Structural versus pipeline composition of higher-order functions (experience report)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue ICFPArticle No.: 102, Pages 343–356https://doi.org/10.1145/3547633In teaching students to program with compositions of higher-order functions, we have encountered a sharp distinction in the difficulty of problems as perceived by students. This distinction especially matters as growing numbers of programmers learn about ...
- research-articleAugust 2022
Plan Composition Using Higher-Order Functions
ICER '22: Proceedings of the 2022 ACM Conference on International Computing Education Research - Volume 1Pages 84–104https://doi.org/10.1145/3501385.3543965Background and Context. Program planning has been a long-standing and important problem in computing education. Finding useful primitives for planning and assessing whether students are able to understand and use these primitives remain open problems. ...
Modular specification and verification of closures in Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 145, Pages 1–29https://doi.org/10.1145/3485522Closures are a language feature supported by many mainstream languages, combining the ability to package up references to code blocks with the possibility of capturing state from the environment of the closure's declaration. Closures are powerful, but ...
- research-articleAugust 2021
Developing Behavioral Concepts of Higher-Order Functions
ICER 2021: Proceedings of the 17th ACM Conference on International Computing Education ResearchPages 306–318https://doi.org/10.1145/3446871.3469739Motivation. Higher-order functions are a standard and increasingly central component in many kinds of modern programming, including data science and Web development. Yet little research has been devoted to student learning or understanding of this ...
- research-articleJune 2020
APL since 1978
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue HOPLArticle No.: 69, Pages 1–108https://doi.org/10.1145/3386319The Evolution of APL, the HOPL I paper by Falkoff and Iverson on APL, recounted the fundamental design principles which shaped the implementation of the APL language in 1966, and the early uses and other influences which shaped its first decade of ...
-
- research-articleOctober 2019
Writing Tests for This Higher-Order Function First: Automatically Identifying Future Callings to Assist Testers
Internetware '19: Proceedings of the 11th Asia-Pacific Symposium on InternetwareArticle No.: 6, Pages 1–10https://doi.org/10.1145/3361242.3361256In functional programming languages, such as Scala and Haskell, a higher-order function is a function that takes one or more functions as parameters or returns a function. Using higher-order functions in programs can increase the generality and reduce ...
Functional programming for modular Bayesian inference
Proceedings of the ACM on Programming Languages (PACMPL), Volume 2, Issue ICFPArticle No.: 83, Pages 1–29https://doi.org/10.1145/3236778We present an architectural design of a library for Bayesian modelling and inference in modern functional programming languages. The novel aspect of our approach are modular implementations of existing state-of-the-art inference algorithms. Our design ...
- research-articleJanuary 2016
Practical, general parser combinators
PEPM '16: Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program ManipulationPages 1–12https://doi.org/10.1145/2847538.2847539Parser combinators are a popular approach to parsing where context-free grammars are represented as executable code. However, conventional parser combinators do not support left recursion, and can have worst-case exponential runtime. These limitations ...
- research-articleJune 2015
Counter-example complete verification for higher-order functions
SCALA 2015: Proceedings of the 6th ACM SIGPLAN Symposium on ScalaPages 18–29https://doi.org/10.1145/2774975.2774978We present a verification procedure for pure higher-order functional Scala programs with parametric types. We show that our procedure is sound for proofs, as well as sound and complete for counter-examples. The procedure reduces the analysis of higher-...
- research-articleSeptember 2013
Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingPages 377–390https://doi.org/10.1145/2500365.2500600Modular programming and modular verification go hand in hand, but most existing logics for concurrency ignore two crucial forms of modularity: *higher-order functions*, which are essential for building reusable components, and *granularity abstraction*, ...
Also Published in:
ACM SIGPLAN Notices: Volume 48 Issue 9 - research-articleJuly 2013
ICFP 2002: Contracts for higher-order functions
ACM SIGPLAN Notices (SIGPLAN), Volume 48, Issue 4SPages 34–45https://doi.org/10.1145/2502508.2502521Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the "Design by ...
- research-articleJune 2012
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR), Volume 44, Issue 3Article No.: 10, Pages 1–33https://doi.org/10.1145/2187671.2187672We present a survey of control-flow analysis of functional programs, which has been the subject of extensive investigation throughout the past 30 years. Analyses of the control flow of functional programs have been formulated in multiple settings and ...
- research-articleMarch 2012
From HOT to COOL: transforming higher-order typed languages to concept-constrained object-oriented languages
LDTA '12: Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and ApplicationsArticle No.: 3, Pages 1–7https://doi.org/10.1145/2427048.2427051In this paper, we present a transformation that maps type-level expressions from functional higher-order, typed (HOT) languages to type-level expressions in object-oriented HOT languages by mapping higher-order types to type parameters of generics that ...
- research-articleSeptember 2009
Future contracts
PPDP '09: Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programmingPages 195–206https://doi.org/10.1145/1599410.1599435Many recent research projects focus on language support for behavioral software contracts, that is, assertions that govern the boundaries between software building blocks such as procedures, classes, or modules. Contracts primarily help locate bugs in ...
- research-articleSeptember 2009
Model-checking higher-order functions
PPDP '09: Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programmingPages 25–36https://doi.org/10.1145/1599410.1599415We propose a novel type-based model checking algorithm for higher-order recursion schemes. As shown by Kobayashi, verification problems of higher-order functional programs can easily be translated into model checking problems of recursion schemes. Thus, ...
- research-articleAugust 2009
Parametric datatype-genericity
WGP '09: Proceedings of the 2009 ACM SIGPLAN workshop on Generic programmingPages 85–93https://doi.org/10.1145/1596614.1596626Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas polymorphic programs abstract from the "integers" in "lists of integers",datatype-generic programs abstract from the "lists of". There are two main ...
- research-articleAugust 2009
The function concept in C++: an empirical study
WGP '09: Proceedings of the 2009 ACM SIGPLAN workshop on Generic programmingPages 25–36https://doi.org/10.1145/1596614.1596619Higher-order functions are essential for generic programming. While they are naturally supported in functional programming languages, there are no higher-order functions in C++. There, various function datatypes exist that simulate the effect of higher-...
- research-articleSeptember 2008
Tips on teaching types and functions
FDPE '08: Proceedings of the 2008 international workshop on Functional and declarative programming in educationPages 79–90https://doi.org/10.1145/1411260.1411272Many beginning students of functional programming have difficulty understanding higher-order functions and their types. Experienced functional programmers have such a close familiarity and intuitive grasp of these crucial concepts that they may find it ...
- research-articleSeptember 2008
Semantic subtyping: Dealing set-theoretically with function, union, intersection, and negation types
Journal of the ACM (JACM), Volume 55, Issue 4Article No.: 19, Pages 1–64https://doi.org/10.1145/1391289.1391293Subtyping relations are usually defined either syntactically by a formal system or semantically by an interpretation of types into an untyped denotational model. This work shows how to define a subtyping relation semantically in the presence of Boolean ...
- research-articleJanuary 2008
Semi-inversion of functional parameters
PEPM '08: Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulationPages 21–29https://doi.org/10.1145/1328408.1328413Semi-inversion is a generalisation of inversion: A semi-inverse of a program takes some of the inputs and outputs of the original programand returns the remaining inputs and outputs.
Previous papers by the author have described semi-inversion for a ...