Vraag Waarom zijn de indexen van Scala tuples op 1 gebaseerd?


"Programmeren in Scala"legt uit dat tuples

_N-getallen zijn gebaseerd op één, in plaats van op nul, omdat beginnen met 1 is   een traditie ingesteld door andere talen   met statisch getypte tupels zoals   Haskell en ML

maar dit kan moeilijk worden genoemd een toelichting.

Waarom werden tuples in de eerste plaats gedefinieerd als 1-gebaseerd in Haskell en ML? Zijn er wiskundige / programmeervoordelen in het hebben van 1-gebaseerde geïndexeerde tupels en niet 0-gebaseerde?

Bedankt, Ori


27
2018-06-05 07:00


oorsprong


antwoorden:


Denk ik _1, _2 enz. het is een afkorting voor "eerste", "tweede", enzovoort. (fst en snd zijn bijvoorbeeld in het verleden gebruikt voor toegang tot het linker en rechter deel van een tupel). De index in een array aan de andere kant is een compenseren en het eerste element bevindt zich meestal op offset 0.

Zijn er wiskundige / programmeervoordelen in het hebben van 1-gebaseerde geïndexeerde tupels en niet 0-gebaseerde?


19
2018-06-05 07:06



Misschien gebruikten Haskell en ML 1-gebaseerde tupels omdat COBOL, Algol en FORTRAN maakten gebruik van op 1 gebaseerde arrays. Traditie is iets grappigs ...


4
2018-06-05 07:13



0 gebaseerde dingen zijn geweldig als je wiskunde wilt doen met de index. Het werkt gewoon niet met 1 gebaseerde indexen.

Toch is voor iedereen behalve computer geeks 1 gebaseerd veel natuurlijker.

Tupels zijn bedoeld om compleet verschillende dingen te bevatten. Dus doe zoiets als de index van dit element toevoegen en voeg het toe aan de index van dat element en verkrijg het element met de resulterende index voor tuples.

Daarom zou ik zeggen dat tuples 1 gebaseerd zijn, omdat het normaal is om te doen en er geen reden is om het niet te doen.


3
2018-06-05 13:32