From: Pixel Date: 2000-02-15T02:25:51+01:00 Subject: [ruby-talk:01354] Say hi (bis) 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 --------------------------------------------------------------------------------