1+1…あれ。
1+1をやってみましょう。
>> 1+1 ** Syntax Error: Invalid integer -- 1+1 ** Near: (line 1) 1+1 >> 1 + 1 == 2
演算子もまた識別子扱いですので、空白が必要です。
ならば。
>> ++: :+ >> 1 ++ 1 ** Script Error: ++ expected value2 argument of type: number pair char money date time tuple ** Near: ++ 1 >> ++ 1 1 == 2
Haskellのように、記号だけで構成された識別子が中置演算子になるのではなく、中置演算子として認識される識別子は決まっているようです。andやorも中置です。"-"演算子が単項と二項両方に使える特別扱いを受けていることを考えれば、こういう割り切り方もありでしょうか。
>> 1 + 2 * 3 == 9 >> 1 + (2 * 3) == 7
それでも計算は常に左からの様子。SamllTalkもこんなでしたっけね。
括弧は使用できます。
>> 10 // 3 == 1 >> 10 // -3 == 1 >> -1 // 3 == -1
C系に毒されていない構文ということでk.inabaさんに紹介いただいたRebolですが、余りはなんと"//"でした。どひゃあ。
あと時間足せます。
>> 1:30 + 1:30 == 3:00 >> #"A" + 10 == #"K" >> false + 1 ** Script Error: Expected one of: logic! - not: integer! ** Near: false + 1
文字型に整数を足してシフトを見て、ならばとfalse + 1 = trueを期待したのですがこれはエラー。列挙型なんてものは無いでしょうから、まあ、そうか。