## Programming with Bananas in OCaml

By bananas, I mean banana brackets as in the famous paper “Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire” by Meijer et al. In this post I only focus on bananas, also called catamorphisms….

Skip to content
# Category: Functional Programming

## Programming with Bananas in OCaml

## Lexical Scoping in OCaml

## Lambda Calculus in OCaml: “fun” and “function”

## Lazy or Eager? Order of Evaluation in Lambda Calculus and OCaml

## Currying in Lambda Calculus and OCaml

## Encoding Recursion with the Y Combinator

## Recursion in Lambda Calculus: The Y Combinator

## Simple Yet Powerful: Lambda Calculus

## Functional Style Selection Sort in OCaml

## Imperative and Functional Insertion Sort in OCaml

Exploring the breadth of software engineering.

By bananas, I mean banana brackets as in the famous paper “Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire” by Meijer et al. In this post I only focus on bananas, also called catamorphisms….

Like many other modern languages, OCaml uses lexical (or static) scoping. That is, in OCaml, when your function includes a name that calls a variable, in the function, that variable has the value when the…

Lambda is fun! Lambda is certainly fun, but what I mean here is that the λ in lambda calculus is similar to the expression fun in OCaml. Recall that in lambda calculus, we have function expressions…

Recall in lambda calculus, two items side by side is an application. One applies the left item (the function) to the right item (the input). E.g.: f x is read as “apply f to x”,…

Currying Recall that in lambda calculus, a function can have more than one input, each preceded by a λ symbol. Another way of thinking about more than one input is currying. Currying a function of two…

In this post I’ll go through some exercises and encode some recursive functions with the Y combinator. Encoding with rec Continuing on from my last post, Professor Hutton gave us two exercises in the Y…

In the last post I talked about how powerful lambda calculus is. In this post I further proves the point by encoding recursion in it. This enables you to do recursion in any languages! If…

I’ve long since heard of “Lambda Calculus” but I didn’t really know what it is about until I saw this video. It got me super excited! What I love about it is that it’s built…

In this post I talk about what I have tried and learnt in the process of writing the functional correspondence of the imperative selection sort I wrote earlier in OCaml. I learnt a lot in…

I wrote the insertion algorithm in both imperative and functional styles in OCaml! I talk about the fun and challenges of each style below: Imperative Insertion Sort I strictly follow the pseudocode on p.18 of…