hi all,

just discovered ruby (well heard of it, before but hadn't time to look at it)

i'm mostly perl programmer, but fond of type-infered functional language 
(aka haskell, ocaml). of course i know of c/c++/java and the like

for 2 days, i've been looking at ruby, and i do like it :)
(otherwise i wouldn't have subscribed here :pp)


now, enough of blablah. i've got a few questions and remarks that i'd like
commented:

--------------------------------------------------------------------------------
bad points:

--- `||' and `or' treats everything except nil as true
    (so 0 || 4 == 0,  "" || 4 == "")

-- redefine a function -> no error

-- ?? no explicit references (aka \ in perl)

-- ?? no slices

-- ?? can't redefine a function

-- no overloading (can be achieved manually, but hell...)

-- no verification of #vars for blocks

-- no type checking (really, there could be a mode paranoid that would catch most typos)

- no flattening of lists (eg: trans(x1,y1,x2,y2) can't be called with trans(*f,*g))
  (only for blocks)

- map missing for arrays (is .dup.filter ?)

- hash are real hash -> can't keep order (maybe a Vector would be nice (also more economic))

- you have to initialize before doing +=

- no named arguments (see python)

- doc not as good as perl's :ppp
- error messages not explicit

- each_index useless? why not passing both the index and the value (usefull!)

good points:

++ functional stuff (restricted (no partial application))

+ ensure for exceptions

+ intersection/union/... using + - for lists (arrays)

+ no ';' needed, but can be used (as in python)

+ ? and ! are allowed as the last char of a function name (yeah nice)

remarks:

/ no debugger -> is -rdebug (why isn't it -d ?)

/ in hash, { a => 1 } not allowed, must be { 'a' => 1 }

/ no implicit transformation string <=> num
--------------------------------------------------------------------------------