忘れた頃にやってくる。
with Ada.Text_IO; use Ada.Text_IO;
function Yuno return Integer is
type Yuno is new String;
function "/" (X: in Yuno; Y : in String) return String is
begin
return String(X) & Y;
end "/";
function "/" (X: in String; Y : in Yuno) return String is
begin
return X;
end "/";
function "<" (X: in String; Y : in String) return Integer is
begin
Put_Line (X & "×365 " & Y);
return 0;
end "<";
X : Yuno := "ひだまり";
_ : String := "スケッチ";
begin
return
X / _ / X < "来週も見てくださいね!"
;
end Yuno;
gantmakeするときに-gnatifつけないとエラーになるので注意。Adaはunerlineをidentifierの先頭に持ってこれないので、gnatiを使ってidentifierに使用できる文字を拡張し、いわゆる全角アンダーバーを変数名にしている。
あとは演算子のオーバーロードで適当に。引数の型で動作を変えて2個目のXを無視してるくらいかな。
http://yudai.arielworks.com/memo/2008/12/04/114338.trackback
末尾に「8 + 1」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「114338.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。