8. fejezet - Típuskonstrukciók

Tartalom

8.1A megengedett konstrukciók
8.2Szelektorfüggvények
8.3Az iterált specifikációs függvényei
8.4A függvénytípus
8.5A típuskonstrukciók típusműveletei

Az előző fejezetben megvizsgáltuk, hogy milyen lehetőségeink vannak meglevő programokból újak készítésére. A továbbiakban azt fogjuk megvizsgálni, hogyan használhatunk fel meglévő típusokat új típusok létrehozására. Ezeket a módszereket típuskonstrukciós módszereknek, az általuk megkapható típusokat típuskonstrukcióknak nevezzük.

8.1A megengedett konstrukciók

Természetesen sokféle lehetőségünk van meglevő típusból újat csinálni, de mi a továbbiakban csak három speciális típuskonstrukcióval fogunk foglalkozni: a direktszorzattal, az unióval és az iterálttal. Ezeket fogjuk megengedett típuskonstrukcióknak nevezni.

Az első típuskonstrukciós módszer, amivel megismerkedünk a direktszorzat. Legyenek típusok, és jelöljük -nel a nekik megfelelő típusértékhalmazokat, és -nel pedig a hozzájuk tartozó elemi típusértékhalmazokat, és vezessük be az és jelölést.

8.1. Definíció (DIREKTSZORZAT).

A típus direktszorzata a típusoknak, ha

ahol , és

A direktszorzat értékhalmazára bevezetjük a jelölést.

Ha a leképezés kölcsönösen egyértelmű, akkor a direktszorzatot rekord típusnak nevezzük. A direktszorzat típusok általában rekordok, de nem mindig. Például tekintsük a racionális számok halmazának egy lehetséges reprezentációját:

, :

Egyszerűen látható, hogy a fent definiált reláció a racionális számok halmazát reprezentálja, de nem kölcsönösen egyértelmű.

Nagyon fontos továbbá, hogy az új típusértékhalmazt ( ) ne keverjük össze a közbülső direktszorzattal ( ), hiszen egy adott és között nagyon sokféle leképezés megadható, és az új típus szempontjából egyáltalán nem mindegy, hogy ezek közül melyiket választjuk.

Tekintsük például a komplex egészek ( alakú számok) halmazát. Legyen továbbá , és

A két közötti különbség elsősorban akkor válik szignifikánssá, ha például a komplex egészek közötti szorzásműveletet kell implementálnunk a számpárok szintjén, hiszen ekkor az első és a második komponens értékét az

formula alapján különböző módon kell kiszámítani.

A következő módszer, amivel régi típusokból újakat hozhatunk létre, az unió. Legyenek típusok, és jelölje a hozzájuk tartozó típusértékhalmazokat, illetve a nekik megfelelő elemi típusértékhalmazokat. Vezessük be továbbá az és jelöléseket.

8.2. Definíció (UNIó).

Azt mondjuk, hogy a  típus uniója a , , …, típusoknak, ha

ahol , és

Az unió értékhalmazának jelölése: .

Itt is külön elnevezést adtunk annak az esetnek, amikor a leképezés kölcsönösen egyértelmű, ekkor az uniót egyesítésnek nevezzük.

Ebben az esetben is nagyon fontos, hogy mindig megkülönböztessük a konstrukció közbülső szintjén levő uniót ( ) az új típusértékhalmaztól ( ).

A harmadik megengedett típuskonstrukciós művelet az iterált, amellyel egy meglevő típusból alkothatunk új típust. Legyen  típus, a neki megfelelő típusértékhalmaz, és a típus elemi típusértékhalmaza.

8.3. Definíció (ITERáLT).

Azt mondjuk, hogy a  típus iteráltja a típusnak, ha

ahol , és

Az iterált típusértékhalmazának jelölése: .

Az iterált típuskonstrukciónak három speciális esetét különböztetjük meg aszerint, hogy a leképezésre milyen feltételek teljesülnek.

  • Ha a leképezés kölcsönösen egyértelmű, akkor sorozat típuskonstrukcióról beszélünk, és típusértékhalmazát -lal jelöljük.

  • Ha

    akkor az iterált konstrukcót kombináció típusnak nevezzük. A kombináció értékhalmazának jelölése: .

  • Ha

    akkor halmaz típuskonstrukcióról beszélünk. A halmaz típus értékhalmazának jelölése: .

Természetesen az imént felsorolt három eset csak speciális formája az iteráltképzésnek; létezik olyan iterált is, amely egyik fenti kritériumot sem teljesíti.