Is there a software-engineering methodology for functional programming? [closed]

Software Engineering as it is taught today is entirely focused on object-oriented programming and the ‘natural’ object-oriented view of the world. There is a detailed methodology that describes how to transform a domain model into a class model with several steps and a lot of (UML) artifacts like use-case-diagrams or class-diagrams. Many programmers have internalized this approach and have a good idea about how to design an object-oriented application from scratch.

The new hype is functional programming, which is taught in many books and tutorials. But what about functional software engineering?
While reading about Lisp and Clojure, I came about two interesting statements:

  1. Functional programs are often developed bottom up instead of top down (‘On Lisp’, Paul Graham)

  2. Functional Programmers use Maps where OO-Programmers use objects/classes (‘Clojure for Java Programmers’, talk by Rich Hickley).

So what is the methodology for a systematic (model-based ?) design of a functional application, i.e. in Lisp or Clojure? What are the common steps, what artifacts do I use, how do I map them from the problem space to the solution space?

13 Answers
13

Leave a Comment