I've been programming for more years than I care to remember and am enjoying programming in Ruby (especially on Rails). So far I've found nothing "new" (to me) in Ruby, with the exception of the lisp-like features and that's something I'd really like to explore. Unfortunately, unless I've overlooked it, neither the pick-axe book nor "the ruby way" seem to cover this. I'm particularly interested in which common problems these features let me solve in a more elegant and concise way than using regular structured/oo approaches.
> I've been programming for more years than I care to remember and am > enjoying programming in Ruby (especially on Rails). So far I've found > nothing "new" (to me) in Ruby, with the exception of the lisp-like > features and that's something I'd really like to explore.
Could you explain what you mean by "lisp-like features"?
Also, you may want to search the list archives for "lisp", as there have been a number of threads related to it.
> Dňa Nedeľa 12 Február 2006 18:38 Edward Kenworthy napísal: >> Hi All
>> I've been programming for more years than I care to remember and am >> enjoying programming in Ruby (especially on Rails). So far I've found >> nothing "new" (to me) in Ruby, with the exception of the lisp-like >> features and that's something I'd really like to explore. >> Unfortunately, unless I've overlooked it, neither the pick-axe book >> nor "the ruby way" seem to cover this. I'm particularly interested >> in which common problems these features let me solve in a more >> elegant and concise way than using regular structured/oo approaches.
>> Anyone able to point me to a resource please?
>> Edward
> Well, Ruby is a strongly derivative language, there's not THAT much > in terms > of new and exciting features around. It's more about picking out > which you > think are nifty and which not.
> As for the lisp-like operations, I'd say the blocks as lexical > closures are a > notable one. Not very often used as such, but they are somewhat > useful when > you want to develop your own control structures, As Seen In > Smalltalk (tm).
> I'd also put collection mapping / filtering using blocks as one. > Which pretty > much reduces the messy nested loops that you end up with when > trying to do > this in lessay Java into in my opinion much neater method chains. > And then > there's also Enumerable#inject, the swiss knife of collection > operations, > which lets you do pretty much everything. Cf. my favourite #inject > example, a > very cryptic O(n)n factorial:
> class Integer > def factorial > (1..self).inject(1){|m, n| m * n} > end > end
> I also think strongtyping.rb lets you do something along the lines > of poor > man's multimethods. Or rather method overloading based on runtime > types > instead of compile-time.
On Feb 12, 2006, at 11:38 AM, Edward Kenworthy wrote:
> Anyone able to point me to a resource please?
I'm currently reading Higher-Order Perl by Mark Jason Dominus, which is really just a functional programming techniques handbook for Perl. I'm writing about what I'm finding along the way, and translating much of the code. It probably makes a lot more sense if you read the book first, but here are the links, in case they help:
In message "Re: Ruby's lisp features." on Mon, 13 Feb 2006 02:38:18 +0900, Edward Kenworthy <edw...@kenworthy.info> writes:
|I've been programming for more years than I care to remember and am |enjoying programming in Ruby (especially on Rails). So far I've found |nothing "new" (to me) in Ruby, with the exception of the lisp-like |features and that's something I'd really like to explore.
|Anyone able to point me to a resource please?
Ruby is a language designed in the following steps:
* take a simple lisp language (like one prior to CL). * remove macros, s-expression. * add simple object system (much simpler than CLOS). * add blocks, inspired by higher order functions. * add methods found in Smalltalk. * add functionality found in Perl (in OO way).
So, Ruby was a Lisp originally, in theory. Let's call it MatzLisp from now on. ;-)
Dňa Pondelok 13 Február 2006 05:43 Yukihiro Matsumoto napísal:
> Ruby is a language designed in the following steps:
> * take a simple lisp language (like one prior to CL). > * remove macros, s-expression. > * add simple object system (much simpler than CLOS). > * add blocks, inspired by higher order functions. > * add methods found in Smalltalk. > * add functionality found in Perl (in OO way).
You forgot adding onions to taste.
> So, Ruby was a Lisp originally, in theory. > Let's call it MatzLisp from now on. ;-)
I always thought of it as a Smalltalk / Perl crossbreed. Might be because ST ripped off the same features of lisp as Ruby does...
MatzLisp... MatzLisp... MatzLisp... Cor, let's stay with "Ruby", I don't have enough paper tissues to wipe spit off people if I had to pronounce that ;)
> (I've never bothered using the wiki for any of my RubyForge projects, so > I don't know if fighting spam there is a lost cause.
The wiki is a lost cause. It was way to much work to keep it despammed. I disabled it from the rubyforge interface, but apparently the wiki is still running if you got there directly with the URL.
All the information that used to be on the wiki is available (in one form or another) at http://docs.rubyrake.org/.
I will update the main wiki page to point people to the new docs, but chances are that spammers will just overwrite it.
> > The wiki is a lost cause. It was way to much work to keep it > > despammed. > > I disabled it from the rubyforge interface, but apparently > the wiki is > > still running if you got there directly with the URL.
> Ah. Sad.
Yup, I need to fix that... it's been on my List Of Things To Do for a while...
>> The wiki is a lost cause. It was way to much work to keep it despammed. >> I disabled it from the rubyforge interface, but apparently the wiki is >> still running if you got there directly with the URL.
> Ah. Sad.
>> All the information that used to be on the wiki is available (in one >> form or another) at http://docs.rubyrake.org/.
>> I will update the main wiki page to point people to the new docs, but >> chances are that spammers will just overwrite it.
> Can you lock it with chmod?
Lacking shell access on rubyforge makes this difficult to do stuff like that. However, I see Tom has seen this thread. Perhaps he will be gently nudged to do something :)
> Oh, and why I went to the wiki in the first place:
> How can I call one Rake task from inside another task?
> Lacking shell access on rubyforge makes this difficult to do > stuff like > that. However, I see Tom has seen this thread. Perhaps he will be > gently nudged to do something :)
Yup, priority += 1... and now I've actually written it down!
> Sorry for jumping into the middle of the thread, if this has > already been discussed...
> I was wondering if there might be any simple way to limit > access to the wiki to just folks with project admin access. > Maybe disable the normal page edit link, and move it to some > URL only reachable by logged-in admins?
> My thinking is that wikis can still be a handy way to > author/maintain documentation, even if the "globally > editable" aspect is no > longer sustainable due to hoodlums.
Yup, that's a good idea. If UseMod (that's the Wiki RubyForge uses) supports something like that, it'd be great.
> Just a thought - and, regardless: thanks VERY much for rubyforge !!!!!