Erős gépelés - studopediya

Figyelembe véve a példa a gyors rendezés Hoare, akkor láthatjuk, hogy amellett, hogy a már említett közötti különbségek a C és egy absztrakt funkcionális nyelv, van egy fontos különbség: a C függvény úgy rendezi a listát int értékek (egész szám), és a funkciót, az absztrakt funkcionális nyelv - értékek listája bármilyen típusú, mely csoportjába tartozik a megrendelt mennyiség. Ezért az utolsó funkció rendezni egy listát a számok, és egy listát a lebegőpontos számok, és egy listát a szálakat. Akkor írja le az új típusú. Meghatározni ezen összehasonlító műveletek alkalmazhatók újrafordítás nélkül quicksort és felsorolja azokat az értékeket az új típust. Ez hasznos tulajdonság a típus rendszer úgynevezett parametrikus polimorfizmus vagy igaz, és támogatja a legtöbb funkcionális nyelvek.

Egy másik fajta polimorfizmus egy függvény túlterhelés, amely lehetővé teszi, hogy a különböző, de némileg hasonló funkciókat az azonos nevet. Egy tipikus példa a túlterhelt művelet egy közönséges összeadási művelet. hozzátéve funkciók egész és lebegőpontos különböző, azonban a könnyebbség, ők egy és ugyanazt a nevet. Egyes funkcionális nyelvek mellett parametrikus polimorfizmus, a támogatás és operátor túlterhelés.

A C ++, van olyan dolog, mint egy sablont, amely lehetővé teszi, hogy a programozó határozza polimorf funkciók, mint a quicksort. A szabványos C ++ STL könyvtár tartalmaz egy funkciót, és egy sor más polimorf funkciók. De a C ++ sablonokat generikus Ada funkciók gerjeszthet sok túlterhelt függvények, ami mellesleg a fordító össze kell állítania minden alkalommal, ami hátrányosan érinti a fordításkor és a kód méretét. A funkcionális nyelvek quicksort polimorf funkció - ez az egyik egyedi funkciója van.

Egyes nyelvek, mint például Ada, erős gépelés kényszeríti a programozó pontosan leírják, hogy milyen típusú az összes értékek és funkciók. Ennek elkerülése érdekében egy erősen típusos nyelv funkcionális épített speciális mechanizmus, amely lehetővé teszi a fordító, hogy meghatározza, hogy milyen típusú konstansokat, kifejezéseket és funkciói kontextusban. Ez a mechanizmus az úgynevezett típusú következtetés mechanizmus. Számos ilyen mechanizmusok, de a legtöbbjük változatai modellek gépelési Hindley-Milner, fejlődött a korai 80-es években a XX században. Így a legtöbb esetben, akkor nem adja meg, hogy milyen típusú feladatok.

Kapcsolódó cikkek