aiscript
aiscript copied to clipboard
型引数で定義した型に型引数を与えられてしまう
@f<T>(x: T<num>) {}
Tがstrだとすると、str<num>という不正な型を意味してしまうため、
これはエラーになってほしい。
プレイグラウンド: https://aiscript-dev.github.io/ja/playground.html#N4Igxg9gJgpiBcIACAzAPAFQHwAoAe8ABBmgHYCuAtlgJSHAC+IANCAG4wBOAzgJYSkEIAIwA6AEyiADCAZA
名前解決の話なので、型チェックを実装する時にその実行時に検出するようにしたほうがいいような?
現在のリリース版では既に、存在しない型の名前を書いたり、str<num>のように型引数を受け付けない型に型引数を書いたりするとエラーになるので、この例に従うとジェネリック型に型引数を与えた場合もエラーにすべきかなと思っています……
あー確かに 要するに、現行の仕組みだとそもそもユーザー定義型が作れないから名前解決が必要なくなってるんですよね ユーザー定義型が実現するのもいつになるかわかりませんし、それなら一旦は型引数も同じような実装にしてしまってもいいかも?