Your first example is not behaving how you think it is... ruby-1.9.2-p0 :012 > def foo ruby-1.9.2-p0 :013?> puts "foo" ruby-1.9.2-p0 :014?> end => nil ruby-1.9.2-p0 :015 > def call_arg(f) ruby-1.9.2-p0 :016?> puts "calling" ruby-1.9.2-p0 :017?> f ruby-1.9.2-p0 :018?> end => nil ruby-1.9.2-p0 :019 > call_arg(foo) foo calling => nil Note that "foo" is printed before "calling". On Sun, Apr 29, 2012 at 10:22 AM, Michael Orlitzky <michael@orlitzky.com> wrote:
On 04/28/2012 08:47 PM, Mike Meyer wrote:
Ruby makes a bad fit if Haskell is a goal (and that's a good goal). Ruby functions aren't first-class objects, and can't simply be passed to other functions as arguments.
That's like, the least true thing you can say about Ruby =)
A simple test program:
$ cat fcf.rb def foo puts "foo" end
def call_arg(f) f end
call_arg(foo)
Running it:
$ ruby fcf.rb foo
Moreover, every function and method implicitly accepts a function as an argument:
$ cat yield.rb def call_block yield end
call_block { puts "foo" }
This allows you some nice do-block syntactic sugar instead of lambdas which can get ugly.
$ ruby yield.rb foo
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners