-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docsと同じ型注釈を実際に行えるようにする #856
Comments
型エイリアス💭
現在予約語となっている using Callback<T> = @(T, T, num) => T
@reduce<T>(v: arr<T>, func: Callback<T>, initial: T): T {
v.reduce(func, initial)
}
let add: Callback = @(a, b) { a + b }
<: reduce([1, 2, 3], add, 0) // => 6 関数の引数や返値の型は局所的な型エイリアスもできるようにする? @reduce<T>(v: arr<T>, func: Callback, initial: T): T
using Callback = @(T, T, num) => T
{
v.reduce(func, initial)
}
// 関数の外では型名Callbackは使用できない
let add: Callback = @(a, b) { a + b } // エラー Related? |
ジェネリクスと比較演算子の構文には曖昧性があるんだった……。 let f = 1
let num = 2
let str = 3
<: [f<num, str>(4)] // [true, false] 関数呼び出しでの型引数指定の文法をAiScriptに導入すると今まで動いたコードが動かなくなる破壊的変更になってしまう。 @from_json<T>(json: str): T { Json:parse(json) }
let a: num = from_json('42') |
他言語の関数呼び出しの型引数指定で使われている記号
|
RustのturbofishはAiScriptの名前空間の雰囲気に合わせると Javaはメソッド名の前に型引数を書くみたい: |
現状 |
docsに書いてある型注釈が、実際のAiScriptで表記できなかったり表記法が違ったりするので、
docsを変えるか、実際にdocsのような型注釈をできるようにしたい。
ジェネリクス
docsにはジェネリクスの型引数として
value
が導入されている。ジェネリクスの型注釈を実装して、docsも同様の表記法に変更したい。
例:
ユニオン型
docsに
num | null
,str | null
,value | null
があるが、実際にはそのような型注釈はできない。ユニオン型の型注釈を実装したい。
関数型
docsには
@(name: type) { type }
のような形式になっているが、実際には@(type) => type
の形式である。docsの表記を実際の型注釈の表記に合わせたい。
fn
docsに記載があるが、実際には型注釈として使えない。
docsの表記を具体的な型に変更したい。
error
,never
これらもdocsに記載があるが、実際には型注釈として使えない。
実際に型注釈として使えるようにしたい。
The text was updated successfully, but these errors were encountered: