Chris Donnan : Programming – Brooklyn Style
software, trading, family, fun
Posted .net, c#, erlang, functional programming, haskell on Tuesday, July 28th, 2009.
So – I am deep into Erlang (still learning for > 1.5 years), Getting into Clojure (new) and getting into Haskell (a few months now). I have decided to spurn the OCaml/ F# branch of the world at least for a little while…
Anyhow – Erlang is the functional language I have the most experience with, yet next to Haskell – the LANGUAGE feels weak. Erlang the language + OTP + the Erlang VM runtime is amazing but the Language itself is not as lovely as Haskell. When I am typing C# code, I am finding myself more and more functionally minded. For a few years now I have felt the move to functional programming on me. C# has had great improvements – but it still feels way too brittle and verbose next to Haskell.
I recently read these articles:
Haskell for C# Programmers Part 2: Understanding IO.
Haskell for C# Programmers Part 3: Visualizing Monads
I found them helpful understanding monads as someone with a large C# experience. I also found this one:
Monads as containers very helpful. I will admit to having read dozens of articles on monads and just now really getting to a point where I think I can actually perceive the need for writing one of my own.
Functional programming style has made great differences in my personal style in several languages. I like programming languages and I am literate in many. Seek the monad, but 1st seek to understand the primitive bits of functional programming and it will aide your programming in any language.
Posted User Interfaces, functional programming, haskell, programming on Sunday, May 18th, 2008.
This is a great Google Tech Talk on Functional Programming and GUI Development. These are of course 2 things that are near and dear to my programming heart.
The basic concepts are that I liked:
- Functional programming = value oriented programming
- UIs are visualizations of values.
- You expose the parameterization of the functions to users.
- You want to use the unix pipe concepts to pipe inputs/ outputs to each other.
Essentially, the difficult bit for me is that much of the work that I do is about passing around an ‘entity’, editing, maintaing and persisting its state. I am sure there is a good FP answer to this, but I need to see how to fit it into my mental development model.
If I view Excel as the de-facto FP app – I am sure that I can find a way to map my world to a more pure FP stance.
The things randomly rattling around in my brain – vaguely related are:
- Column oriented databases (Bigtable, HBase, etc)
- Google AppEngine’s data model – especially expando types (basically each row may have different or extra columns)
- I am increasingly interested in concepts from Lisp – like the fact that types are just lists of attributes.
Putting together those ideas gets you something like bigtable for persisting potentially sparse-ish, or versions of, or extended type hierarchies of values sets. Value sets are basically attribute lists.
All of that gives a different world than I have today. I cannot say where it is going for sure, but all of this gives me a scent of the next set of dominant paradigms. Learning, building, advancing, etc.
-Chris
