Ονομαστικό σύστημα τύπων
Στην επιστήμη των υπολογιστών ένα ονομαστικό σύστημα τύπων (Αγγλικά: Nominal type system) είναι μια βασική ομάδα του συστήματος τύπων όπου η ισότητα και η συμβατότητα μεταξύ τύπων δεδομένων καθορίζεται με τις ρητές δηλώσεις κατά τον ορισμό των ονομάτων των τύπων. Δύο τύποι είναι ισοδύναμοι (ισοδυναμία ονόματος / στα αγγλικά: name equivalence) εάν έχουν το ίδιο όνομα τύπου στο ίδιο πλαίσιο/συμφραζόμενα. Δύο τύποι που έχουν την ίδια δομή αλλά διαφορετικό όνομα τύπου θεωρούνται διαφορετικοί τύποι. Τα συστήματα τύπων χρησιμοποιούνται για να καθοριστούν αν δύο τύποι είναι ισοδύναμοι ή αν ένας τύπος είναι υποτύπος (στα αγγλικά: subtype) από κάποιον άλλον. Σε αντίθεση όταν έχουμε δομημένα συστήματα τύπων, δύο τύποι είναι ισοδύναμοι εάν έχουν την ίδια δομή (ονομάζεται ισοδυναμία δομής / στα αγγλικά: structural equivalence) δεν χρειάζεται να έχουμε ρητή δήλωση ίδιου ονόματος τύπου. [1]
Παράδειγμα
[Επεξεργασία | επεξεργασία κώδικα]Στο παρακάτω παράδειγμα ορίζουμε την δομή a1
και την δομή b1
σε γλώσσα τύπου C [2]:
struct {
int x;
int y;
} a;
struct {
int x;
int y;
} b;
Ο ορισμός a := b;
είναι αποδεκτός (δηλαδή σωστός) σε μια γλώσσα προγραμματισμού με δομημένο σύστημα τύπων ενώ δεν είναι αποδεκτός (δεν είναι σωστός) σε μια γλώσσα προγραμματισμού με ονομαστικό σύστημα τύπων. Για παράδειγμα η γλώσσα προγραμματισμού Pascal χρησιμοποιεί καθαρά ονομαστικό σύστημα τύπων:
a : array[1..10] of Integer;
b : array[1..10] of Integer;
a := b; (* αυτό δεν είναι αποδεκτό! *)
Έτσι η έκφραση x := y
δεν είναι αποδεκτή παρόλο που ο τύπος a και b έχουν ακριβώς την ίδια δομή.
Δείτε επίσης
[Επεξεργασία | επεξεργασία κώδικα]- Pierce, Benjamin C. (2002). Types and programming languages. Cambridge, Mass. [u.a.]: MIT Press. σελίδες 251–254. ISBN 0-262-16209-1.
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ Boris Magnusson, επιμ. (2002). ECOOP 2002 - object-oriented programming 16th European Conference, Málaga, Spain, June 2002 : proceedings. Berlin: Springer. σελ. 474. ISBN 3-540-43759-2.
- ↑ Gil, Yossi. «Nominal vs. Structural Type Systems» (PDF). Israel Institute of Technology. Ανακτήθηκε στις 14 Δεκεμβρίου 2014.[νεκρός σύνδεσμος]