Sorry, klokane, Rust neznám natolik, abych mohl to tvoje sdělení dešifrovat
To, že order je řád, tady nikdo nezpochybňuje. Řád není totéž co kind (druh), a právě proto tam používají termín order a ne kind. To je, řekl bych, jasné.
Já bych do toho češtinu vůbec nepletl, zbytečně to s ní komplikuješ. Jinak "order" opravdu není "kind". Je to obecný termín používaný v různých kontextech: higher order functions, higher order kinds, higher order logic. Ve všech těhle kontextech má ale analogický význam.
všimni si, prosím: eliminovat HK znamená všechno převést na *
Přesně tak, ale imho ne z toho důvodu, který si myslíš.
Úplně stejně je to s funkcemi - pokud máš HO functions, můžeš napsat
>>> def f(x):
... return x+1
...
>>> def g(x):
... return x(2)
...
>>> g(f)
3
- všimni si, že předáváš "samotné f", neaplikuješ ho na žádné parametry. f má typ number -> number a proto g má typ (number -> number) -> number. f je prvního řádu, g je druhého/vyššího řádu.
Pokud bys HO functions v jazyce neměl, udělat to nemůžeš. Jediné, co můžeš, je:
>>> def f(x):
... return x+1
...
>>> def g(x):
... return x+2
...
>>> g(f(1))
4
f i g jsou prvního řádu a obě mají typ number -> number. Jazyk typ (number -> number) -> number nepodporuje.
Tj. pokud jazyk nepodporuje higher order functions, nemůžeš do funkce předat "samotnou funkci", tj. funkci, která není aplikovaná na všechny parametry, které přijímá. Prvně musíš "díry pro parametry zalepit", tím z funkce uděláš hodnotu. Tj. z number -> number se aplikací na hodnotu typu number stane z celé té věci jenom number, což je hodnota. Předáváš tedy hodnotu, ne funkci.
...a úplně stejně pokud jazyk nepodporuje higher-kinded types, nemůžeš v jazyce použít "typový konstruktor" (funkci přijímající typ a vracející typ) per se - s "nezalepenými dírami pro parametry". Prvně musíš typový konstruktor aplikovat na nějaký proper type, tím se z toho celého stane taky proper type a ten už předat můžeš. Proto v Javě nemůžeš nijak operovat se samotným List (bez parametru). Všude mu nějaký parametr musíš dát, abys z něj vytvořil proper type, který už předat můžeš.