Even higher-order functions for parsing or Why would anyone ever want to use a sixth-order function?

  title={Even higher-order functions for parsing or Why would anyone ever want to use a sixth-order function?},
  author={Chris Okasaki},
  journal={Journal of Functional Programming},
  pages={195 - 199}
  • Chris Okasaki
  • Published 1 March 1998
  • Mathematics, Computer Science
  • Journal of Functional Programming
A higher-order function is a function that takes another function as an argument or returns another function as a result. More specifically, a first-order function takes and returns base types, such as integers or lists. A kth-order function takes or returns a function of order k−1. Currying often artificially inflates the order of a function, so we will ignore all inessential currying. (Whether a particular instance of currying is essential or inessential is open to debate, but we expect that… 

Type inference and optimisation for an impure world

It is argued that it is more important for a compiler to be able to reason about the behaviour of a program, than for the language to be purely functional in a formal sense.

Recursive Ascent Parsing

It is intended to show that the continuation passing style of programming naturally leads to bottom-up or recursive ascent parsers.

Lightweight multi-language syntax transformation with parser parser combinators

The insight is that the problem can be decomposed such that a common grammar expresses the central context-free language (CFL) properties shared by many contemporary languages and open extension points in the grammar allow customizing syntax.

Analysing the complexity of functional programs: higher-order meets first-order

We show how the complexity of higher-order functional programs can be analysed automatically by applying program transformations to a defunctionalised versions of them, and feeding the result to

Lenient evaluation is neither strict nor lazy

Monadic, Prompt Lazy Assertions in Haskell

This work presents a library for enriching Haskell programs with assertions, which test expected properties of run-time values without disrupting the normal computation of a program.

Integration von Programmiersprachen durch strukturelle Typanalyse und partielle Auswertung

This dissertation focuses on a special case of language integration: the embedding of a language in an existing one and proposes a new embedding-technique, based on structural type analysis and partial evaluation, which allows for the generation of code that is nearly as efficient as code being generated by established Haskell compilers.

Functional Programming

  • O. Chitil
  • Computer Science
    Wiley Encyclopedia of Computer Science and Engineering
  • 2008
Functional programming is a programming paradigm like object-oriented programming and logic programming that enables the programmer to describe an algorithm on a high-level, in terms of the problem domain, without having to deal with machine-related details.

DSL Implementation in MetaOCaml, Template Haskell, and C++

This paper reviews embedding, and summarizes how two alternative techniques – staged interpreters and templates – can be used to overcome the limitations of embedding.

Reflections on complexity of ML type reconstruction

This is a collection of some more or less chaotic remarks on the ML type system, definitely not sufficient to fill a research paper of reasonable quality, but perhaps interesting enough to be written



Higher-order functions for parsing

  • G. Hutton
  • Computer Science
    Journal of Functional Programming
  • 1992
This work presents the basic method for combinator parsing, and a number of extensions, and addresses the special problems presented by white-space, and parsers with separate lexical and syntactic phases.

The essence of functional programming

This paper explores the use monads to structure functional programs and describes the relation between monads and the continuation-passing style in a compiler for Haskell that is written in Haskell.

On the recursive programming techniques

One of the books you can enjoy now is recursive programming techniques here and it is your own time to continue reading habit.

Definition of standard ML

This book provides a formal definition of Standard ML for the benefit of all concerned with the language, including users and implementers, and the authors have defined their semantic objects in mathematical notation that is completely independent of StandardML.

Functional Programming Languages and Computer Architecture

  • J. Vedral
  • Computer Science
    Lecture Notes in Computer Science
  • 1991

How to Replace Failure by a List of Successes: A method for exception handling, backtracking, and pattern matching in lazy functional languages

A method whereby some programs that use special features for exception handling, backtracking, or pattern matching can be re-written in a functional language with lazy evaluation, without the use of any special features.

The Deenition of Standard ML

  • The Deenition of Standard ML
  • 1990

Monadic Parsing Combinators

  • Technical Report NOTTCSTR-96-4,
  • 1996

How to replace failure by a list of successes. Conference on Functional Programming Languages and Computer Architecture pp

  • How to replace failure by a list of successes. Conference on Functional Programming Languages and Computer Architecture pp
  • 1985

The De nition of Standard ML

  • 1990