Terméktípus ( Π - típus is , típusok terméke ; angol terméktípus ) - konstrukció programozási nyelvekben és intuicionista típuselmélet , adattípus , az eredeti típusok derékszögű termékeként épített ; más szóval, egy sor típus, vagy " tuple as a type " . A felhasznált típusok és sorrendjük meghatározza a terméktípus aláírását ; az objektumok sorrendje a létrehozott sorban az adott aláírásnak megfelelően az élettartama során megmarad.
Például, ha a Aés típusok Bértékhalmazok , ailletve , akkor a belőlük álló derékszögű szorzatot × b-ként írjuk le , és a kapott terméktípus a lehetséges párok teljes halmaza . AB(a,b)
Az értékhívást használó nyelveken a terméktípus a típuskategória termékeként értelmezhető . Curry-Howard szerint a terméktípusok a logikai kötőszavaknak felelnek meg (műveletek AND).
A kétféle termék speciális esetét gyakran " párnak ", pontosabban " rendezett párnak " nevezik. Tetszőleges véges számú típus szorzatát " n-áris terméktípusnak " vagy " n típusból álló sorozatnak" nevezzük . Az orosz nyelvű irodalomban létezik a „ rendezett enka ” név egy változata is (egy általánosítás a „ kettő ”, „ trojka ” stb. szavakból), amelyet nyelvileg az angol „ tuple ” kifejezés analógiájával építettek fel (lásd tuple () angol) ).
Egy terméktípus degenerált formája, a nulla típusok szorzata, egyetlen típus ( angol unit type , “ unit type ”), azaz egyetlen értékkel reprezentált típus. Egyes nyelvek (például a Python ) típusrendszerei egy vagy több egyedi típust biztosíthatnak, amelyek nem kompatibilisek a null-tuple típussal .
A terméktípusok a legtöbb funkcionális programozási nyelvbe be vannak építve. Például az 1 × … × n típusú terméktípus 1 típusként … type n az ML - ben, vagy 1 - es típusként … type n a Haskellben . Mindkét nyelvben a sorokat v 1 ... v n -ként írják fel, és összetevőiket mintaillesztéssel nyerik ki . Ezenkívül a legtöbb funkcionális nyelv algebrai adattípusokat biztosít, amelyek kiterjesztik mind a terméktípus, mind az összeg típus fogalmát . Az egyetlen konstruktor által meghatározott algebrai típusok izomorfak a terméktípusokkal. * * (,,)(,,)
A típusok sora, mint tiszta terméktípus, formális indoklásul szolgál a nyelvekben elterjedtebb " rekord " összetett típushoz , bár egyes nyelvek mindkét tárolót megvalósítják. A különbség általában abban rejlik, hogy a sorok beállítják és tárolják összetevőik sorrendjét a számítógép memóriájában (ez akkor fontos, ha a komponenseiket címaritmetikán keresztül érik el), de nem biztosítanak hozzáférést a minősített azonosítókon és rekordokon keresztül. ellenkezőleg, határozza meg az azonosítókat, de ne határozza meg a sorrendet. Vannak azonban kivételek:
Sok nyelven a rekord olyan összesített adattípus , amely különböző típusú értékeket nem rejt magában .
Egyes nyelveken (például C -ben vagy Pascal -ban) az értékek memóriában való elhelyezésének sorrendje a típus meghatározásakor van megadva, és az objektumok teljes élettartama alatt tárolódnak, ami lehetővé teszi a közvetett hozzáférést (pl. például mutatókon keresztül ); más nyelveken (például ML -ben ) az elhelyezés sorrendje nincs meghatározva, így az értékekhez csak minősített azonosítóval lehet hozzáférni. Egyes nyelveken bár a sorrend megmarad, az igazítást a fordító vezérli, így a címaritmetika használata platformfüggő lehet. Egyes nyelvek lehetővé teszik a hozzárendelést a különböző rekordok példányai között, figyelmen kívül hagyva a rekordösszetevők azonosítóinak különbségeit, és csak a sorrend alapján. Más nyelvek ezzel szemben csak a nevek egybeesését veszik figyelembe, feloldva a különbségeket a meghatározás sorrendjében.
A rekordokat először a Cobol nyelven vezették be , ahol meglehetősen összetett jelöléssel rendelkeztek. A típuskonzisztencia ellenőrzésekor a Cobol csak a rekordok mezőneveinek egyezését veszi figyelembe, és nem veszi figyelembe a sorrendjük egyezését.
A rekordok formális indoklásaként szolgálnak a típuselméletben . Ugyanakkor a nyelvekben a sorokat olykor olyan rekordok segítségével is meg lehet valósítani, amelyek az eredményül kapott sor mezőinek indexszámait használják azonosítóként.
A C nyelvben a struktúra ( struct) olyan összetett adattípus , amely különböző típusú értékeket nem rejt magában . Az értékek memóriában való elhelyezésének sorrendje a típus meghatározásakor kerül meghatározásra, és az objektumok teljes élettartama alatt megmarad, ami lehetővé teszi a közvetett hozzáférést (például mutatókon keresztül ).
Adattípusok | |
---|---|
Értelmezhetetlen | |
Numerikus | |
Szöveg | |
Referencia | |
Összetett | |
absztrakt | |
Egyéb | |
Kapcsolódó témák |