From: Stu Date: 2011-04-21T15:31:04+09:00 Subject: Re: anonymous closures with Proc,new, lambda and -> My interest in learning functional programming( or at least the foundation of) is because I haven't done it before( though I flirted with scheme a couple years ago). I don't really know what monads are I was just compiling a list of "things I should look into" for future reference to take the autodidactic approach to learning functional paradigms. When I first to the plunge to learn object oriented paradigm from a procedural background I know I made it harder than it is. The first thing I did to tackle the learning curve was to break down the four concept layers encapsulation, inheritance, polymorphism and abstraction. It wasn't until I began creating composite objects, sending messages and creating observer objects until it finally hit me and all seemed so simple that I didn't understand why it was so hard in the first place. As a side note the Ruby Language shows just how well an object oriented program is. Simply the organisation behind every object in it's own inheritance hierarchy all the way down to BasicObject, polymorphic design of variants like lambda and Proc.new. Even the redefinition of operators to deal with primitive and abstract data types in their own domain( i.e. 3 * 3, [42,3] - [3,45,54], "lamda " * 3)... This is inspirational for modelling my own objects with this type of object framework if I may be so À Propos. My background consists of posix shell scripting( ash, awk) and some c. My interest in ruby has been to add a general purpose programming language to my toolbox. After I get to a proficiency apex with ruby I have in the learning queue to go back and refresh my c knowledge and take the time to truly grok the fundamental data structures and algorithms. Once that goal is hit I had planned to move to c++. C++0x will be incorporating lambda and closures. I imagine c++ will be a life long journey as it's a multi-paradigm programming language as well. (is it 4 or 5 languages in one now?) As Robert pointed out Ruby may not be the best language to learn functional programming concepts with. This speaks volumes to me as I am a huge proponent to the attitude to use the right tool for the right job. If I am not mistaken most of these languages are dialects of Lisp( correct me if I am wrong). I am not in a position to learn to earn nor am I a mathematician. My interest is to simply better myself as a programmer. Those of you who have used Haskell monads does one really need to have invented string theory to understand it or is it like how I explained the object oriented learning curve where one might over-think it's simplicity therefor overcomplicating their comprehension of the paradigm? Also is there a canonical or pedagogical tutorial for me to start with? Hello, World! =) Which language would be a decent new users language which would fit well into my unix toolkit above as well as threading the knowledge back into ruby's hybrid programming? (scheme, haskell, clojure common lisp) Thanks in advance ~Stu