Thursday and Friday was the Yow Lambda Jam conference. I am very glad I attended this as well, I got a lot out of it even though the only functional langauge I am familar with is Clojure. The format for most of the day was 3 concurrent sessions at any one time, usually this meant there were sessions on Clojure, Scala and Haskal (or something similar). I tried to attend the all of the Clojure sessions. There were a couple of times that I there were no Clojure sessions but I managed to find some less technical presentations to attend during these times, for example a presentation on using Haskal in production (which was facinating even without being familar with a lot of the technology they used).
The afternoon code jams were more practical sessions for the day. On the first day I attended one on Clojure macros and due to my limited exposure to macros I struggled a little, but it was facinating to see the more complex things you can do with macros. I'm going to steal the quote shown during the jam - "given a lisp you have any programming language you want or something to that extent". This really became aparent in one of the exercises where we essentially created LINQ for clojure. Which, as a person coming from a .Net background (and misses this out of Java), showed just how powerful macros are. I wouldn't go as far as saying this contradicted the workshop about macros where we were told that macros are rarely used, but it did show that you can do some amazing things in macros. I am still of the opinion that I wouldn't use macros unless I had to, but I am pretty sure that there would be situations where you are frequently using a pattern that could be made more readable with a macro.
After only 2 weeks looking at functional programming as a whole I am sold on the benifits of functional programming but if I was asked whether someone should use functional programming I would quote the consultants motto "it depends". I think there is a time and a place for functional prgramming, it might be possible to use functional programming to solve a problem but that doesn't mean you should.