forkしたいけど技術が無いのでミリ。できるようになったらやる予定。以下メモ。
単数タプル(alias)
aliasを単数タプルの型にする。
void func(){} alias test=func;
alias test="test";
タプルにexpressionを入れられるように
import std.typetuple; int x; alias TypeTuple!(x*x) test;//旧構文 void main(){ x=10; writefln(test); x=20; writefln(test); }
int x; alias test=x*10;//新構文
assertionごまかしたらうまくいった(tuple_exp.diff)。gdcで動作確認。完全修飾名じゃないのでコンフリクトするはず。いや、前方参照があるからそんなこと無いのか?
変数テンプレート(?)の省略構文
template f(alias i){ const int f=i*10; }
を省略して
const int f(alias i)=i*10;
と書けるように(value_temp.diff)。
aliasも型なので同様。
型タプルを型に限定してalias[]を値/型/式を入れられるタプルにする
template test(T...){}ではTは型のみ。
template test(alias T...)ではTはなんでもおk。
ってかtemplate test(char str...)とかも書けるように。
toStringとtoHashを削除してconv(char[])とconv(hash_t)に
これはガチ。引数も渡せるようにしてconv(char[],16)12とかも対応させる。
{}をデレゲートリテラルからスコープ(コード片)リテラルに
alias test(alias[] arr)={ foreach(i;arr){ writefln(i); } } void main(){ int x,y,z; test!([x,y,z]); }
バッドノウハウ色出まくり。
タプルリテラル
@2,4,"test"@とかにする。{}は特殊な場合にスコープのと衝突する。
タプルをstructや配列にcastできるようにしたりとか。
名前付きタプル
@"test"=2,"test2"=3@とかにする。
valuesやnamesでtypetupleを取得できるようにする。
連想配列や配列にcastできるようにする。
static foreach
constの配列に。scope static foreachでスコープを導入、そうでなければスコープを導入しない? むしろ変数の宣言でスコープを変更できた方がいいな。