1 の脳内で動くと思われる Uva
オレオレ言語の Uva 熱が続いているので Uva のことについて書く。
Uva って何?
Uva は Ceylon をベースにしています。
Ceylon は結構良い構文だし、Uva*1 は Ceylon のサブセットらしいので、そんな感じの名前にしました。
多分、色々と Ceylon と違うくなるはずです…………。
変数定義
Uva は識別子の前の方に型を書く言語です。
hoge
という整数型の変数を定義してみましょう:
int hoge; // Syntax Error!
さて、これはシンタックスエラー*2です。
Uva の変数はデフォルトで変更不可なので、上記のようにすると hoge
に値を再設定*3できません。
変更可能な変数にはアノテーションとして variable
を付けます:
variable int hoge; // OK
暗黙的に型指定されるローカル変数
コンパイル時に型推論されるようにするには C# であれば このように書きます:
var hoge = 42;
Ceylon では:
value hoge = 42;
と書きますが、Uva では:
auto hoge = 42;
です。
variable
の後に value
と付くことも考えられるので、var が被ってしまうのは美しくないような気がします。
なので、C++ から取って auto
としました。
また、auto
は関数の戻り値の型としても使えます*4。
auto plus(int a, int b) => a + b; // plus の型は int(int, int)
Uva での auto
は疑似型*5で、キーワードです。
どのような型の値でも格納できる型は別にあります。
それが any
です。
any
は Anything
のエイリアスです。
uva.language
名前空間に恐らく以下のように定義されているはず*6です。
alias any => Anything;
(๑´ڡ`๑) おしまい