builtin package - builtin - Go Packages
https://pkg.go.dev/builtin#make
make([]int, n) みたいな組み込み関数を知り、キモすぎて泣いてる
お前ふつうの関数みたいな顔してるけど型を引数にとってるの何やねん、それとも []int とだけ書くと typeid 的な特殊な型の値になるんか? (と思ってもリファレンス (https://pkg.go.dev/builtin#Type) ではそんな感じはしないし)
関数呼出と特殊形式 (というのは Lisp での名前だが) の区別がつかないの、だいぶきらい
知らない名前の foobar(hoge, fuga) みたいなのがあったとき、それが予約語や構文レベルでどうにかなっているのか単なるユーザ定義の関数なのか見た目だけでは区別できないの、だいぶ険しくないですか?
いや make([]int, n) について言うなら「関数ではなくコンパイラビルトイン/マクロ/構文です」と言われたら納得していたと思うんだけど (いやそれでもキモいが)、リファレンスに堂々と
func make(t Type, size ...IntegerType) Type
と書いてあるので何じゃこりゃと
それとも Go って昔からユーザがこういう「型そのものを引数にとる (かのような) 関数」を定義できる仕様になってたんですかね……
Go のことは知らんけど、それができるなら最初からジェネリクスはあったということになるし、たぶんそうじゃないよね?