Μετάβαση στο περιεχόμενο

Ονομαστικό σύστημα τύπων

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
(Ανακατεύθυνση από Nominal type system)

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

  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. 
  2. Gil, Yossi. «Nominal vs. Structural Type Systems» (PDF). Israel Institute of Technology. Ανακτήθηκε στις 14 Δεκεμβρίου 2014. [νεκρός σύνδεσμος]