Terméktípus - Product type

A programozási nyelvek és típusú elmélet , a termék a fajta egy másik, összetett, írja be a szerkezetet. A termék "operandusai" típusok , és egy terméktípus szerkezetét a termékben lévő operandusok rögzített sorrendje határozza meg. Egy terméktípus egy példánya megtartja a rögzített sorrendet, de egyébként tartalmazhatja a primitív adattípusok összes lehetséges példányát . A terméktípus egy példányának kifejezése egy kettő lesz , és "kettős típusú" kifejezésnek nevezzük. A típusok terméke két vagy több típus közvetlen terméke .

Ha csak két komponenstípus létezik, akkor "pár típusnak" nevezhetjük. Például, ha két A és B komponenstípus az adott típus összes lehetséges értékének halmaza, akkor az A × B terméktípus olyan elemeket tartalmaz, amelyek párok (a, b), ahol az "a" és "b" a A és B rendre. A pár típus a függő pár típus speciális esete , ahol a B típus az A- ból kiválasztott példánytól függhet .

Számos nyelven a terméktípusok egy rekordtípus formájában fordulnak elő, amelyhez a duplakomponensek címkével elérhetők . Azokban a nyelvekben, amelyek algebrai adattípusokkal rendelkeznek , mint a legtöbb funkcionális programozási nyelvben, az egy konstruktorral rendelkező algebrai adattípusok izomorfak egy terméktípushoz.

A Curry – Howard megfeleltetésben a terméktípusok logikai kötőszóval (AND) vannak társítva a logikában.

A fogalom közvetlenül kiterjed egy tetszőleges véges számú típus (n-áru terméktípus) szorzatára, és ebben az esetben jellemzi azokat a kifejezéseket, amelyek a megfelelő típusú kifejezések halmazaként viselkednek. A terméktípus degenerált formája az egységtípus : nem típusú termék .

Az értékenkénti programozási nyelvekben a terméktípus párok halmazaként értelmezhető, amelyek első komponense az első típus értéke , a második komponense pedig a második típus értéke. Röviden, ez egy derékszögű termék, és megfelel a típusok kategóriájában szereplő terméknek .

A legtöbb funkcionális programozási nyelvnek primitív a terméktípus fogalma . Például, a termék a típusú 1 , ..., típus n van írva típusú 1* ... *típusú n a ML és (írja 1, ... ,típusú n) a Haskell . Mindkét nyelvben a sorrendeket (v 1, ... ,v n írják, )és a tuple komponenseit mintaillesztéssel vonják ki . Ezenkívül számos funkcionális programozási nyelv általánosabb algebrai adattípusokat kínál , amelyek kiterjesztik mind a termék, mind az összeg típusokat . A terméktípusok az összegtípusok kettősségét jelentik.

Lásd még

Hivatkozások