Menu Sidebar


FPOO Ch. 9: Functions That Make Functions

Unlike Clojure, as far as I know Elixir does not have a library of foundational higher-order functions such as like lift or complement. So I’ll have to build them myself. Before I do anything else, I need a helper function for adapting the arity of anonymous functions. This is because Elixir has no support for […]

FPOO Chapter 7: Programming with Dataflow

This is where FPOO starts to get interesting. I have to say I find the choice of the term “dataflow” confusing due to its other associations in programming. But this section introduces a style of working with data–first annotating it, then filtering it–which I’ve never really given a lot of thought to. I’m going to […]

FPOO Chapter 5: Classes

So far, my tiny object system in Elixir has been stowing all methods directly in instances. Chapter 5 of FPOO directs me to move instance methods out into a “class” of some kind. First off, there’s no more new_point . In its place, a simple keyword list defining attributes of the class. The instance variables […]

FPOO Chapter 4: Encapsulating methods in the constructor

Today I slightly refine the nascent OO implementation in Elixir. Here’s the new point constructor, with methods contained within it:

And here’s send_to, which (slightly) eases sending messages to objects.

Exercise 1: x, y, and add This exercise re-adds x, y, and add methods.

This is all quite horrible so far; presumably […]

Older Posts

Virtuous Code

"The three virtues of a programmer: laziness, impatience, and hubris" — Larry Wall

Books and Screencasts

RubyTapas Screencasts

RubyTapas Screencasts

Small plates of gourmet Ruby code.

Confident Ruby

Confident Ruby cover

32 Patterns for joyful coding.

The Making of

Confident Ruby cover

Watch me build an app in Sinatra and Rails

Objects on Rails

Objects on Rails

A developer notebook on applying classic Object-Oriented principles to Ruby on Rails projects.

Exceptional Ruby

Exceptional Ruby

The definitive guide to exceptions and failure handling in Ruby.