@ would make a good operator for a date constructor, though it would be nice to have a (non interpolated) raw Datatype format for it too. For example: today = { @ "2006-06-05" } today = 2006-06-05T The @ constructor would allow for interpolation of variables: day = { @ "$year-$month-$day" } In fact, that syntax is almost good enough to make the T constructor redundant; it only saves like seven characters, and can't even interpolate. For strimming (string trimming), I rather like the ^ and $ operators, and they should take regular expressions too. So chomp would be: line = { line $ /[\r\n]+/ } As well as that, ~ would make a good stripping operator, especially since it kinda means "not", i.e. take this from the beginning and end of the string. In that case, you could do such as this to strip whitespace: token = { token ~ /[ \t\r\n]+/ } Though it might be nice to have a @strip library function too: token = { @strip token } If blocks were to be allowed in interpolation, " and " could be a bit like block delimiters and there could be recursive descent parsing of strings. That would allow such as: for fn in { @glob "*.txt" } @sh "mv $fn ${fn $ \".txt\"}.html" Which is kinda messy, but... hmm. for fn in { @glob "*.txt" } html = {fn $ ".txt"} + ".html" @sh "mv $fn $html" Not sure what to do about the regexp vs. divide problem. I suppose that making spaces mandatory to close would be a way to do it. Otherwise, you're looking at { @Regexp "[ \t\r\n]" } or something. Case syntax: greeting = "Hello" given greeting /Hey/ { say "Hey there" } /Hello/ { say "Hello there" } You should be able to leave the braces out, too. Stuff to pass to declination functions: pos = original position args = the args arglen = length of the args Though perhaps you should be able to request these things, since arglen seems most sensible when you don't want to have to bother passing all the args to something. So for plus: def decline(pos, args, arglen): if (arglen < 2): return True elif (pos != 0) and (arglen != 2): return True elif (pos == 0) and (arglen == 2): return True return False py.opPlus @loop { example || break } -- Sean B. Palmer, inamidst.com