I'm currently programming in Ruby, so that probably colors my opinions. - Syntax: Being a lisp-like, there isn't much, but what are valid identifiers for instance? - Integers and floats - size and precision, basic operations (arithmetic and bitwise operations). I could't find the exponentiation or the modulo operators for instance. - Strings - Are they like ruby (1.8) strings, basically byte arrays with a given size, without awareness of encodings? - Regular expressions. Mzscheme probably has them, but how to use them? - It's built on scheme, so does it have tail call optimalization? - Continuations - are they supported? - Slices for lists and strings. s[1,2] means starting from pos 1, two values, s[1..3] means starting from pos 1 until (including) pos 3, s[1..-3] means starting at pos 1 upto the third value from the end. - Ranges! They are surprisingly useful. Defined as two values of the same type that react to comparisons and succ. - Namespaces. Every language needs namespaces, and better sooner than later. - each - how to break out of an each loop? - Enumerables. The Ruby equivalents of functions like keep,rem,all,some,map are all defined in terms of 'each' - any datastructure that responds to each can also use the methods in the Enumerable. That works fantastic! Arrays, hashes, ranges, strings, sets, bitsets, input streams etc. all have the same interface. But Arc doesn't have polymorphism, so there's only one 'each' function, which only works on arrays. How to make this work? |