Ονομαστικό σύστημα τύπων
Στην επιστήμη των υπολογιστών ένα ονομαστικό σύστημα τύπων (Αγγλικά: 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.