Názor k článku
Další síťová karta bude mít jaderný ovladač v Rustu od radekm - To by mě zajímalo, jak se řeší indexy...

  • 3. 9. 2024 19:28

    radekm
    Stříbrný podporovatel

    To by mě zajímalo, jak se řeší indexy do pole, když je to pole plněné dynamicky a indexy mohou být vzaty v podstatě odkudkoli.

    Funkce jsou schopny přijmout "důkazy" (vhodné typy). Například funkce pro indexování pole

    fun{a:t@ype}
    indexuj_pole
      {n:int}{i:nat | i < n} (A: arrayref(a, n), i: size_t i): (a)

    má dva normální parametry v kulatých závorkách A (pole s prvky typu a o délce n) a i (index do pole, který má hodnotu typového parametru i).
    Pak ale potřebuje dva typové parametry. První typový parametr n s velikostí pole. Druhý i s velikostí indexu a omezením jeho velikosti.

    Konkrétní hodnoty n a i nemusí být známy v době kompilace. V době kompilace se jen ověří, že to jsou čísla, a že i má požadovaný rozsah.

    Jinak vždy, když vidím nějaký podobný akademický superjazyk, který dává na zadek nějakému jazyku z praxe, říkám si, proč tedy všichni nepoužíváme ten superjazyk.

    To je dobrá otázka. V tomhle by asi také šlo psát jádro.

    Osobně si myslím, že je to jazyk z rodiny Standard ML, která není moc oblíbená. Ale nevím proč.