چند ریختی زیرنوعی

در تئوری زبان‌های برنامه نویسی ، چندریختی زیرنوعی نوعی از پلی مورفیسم نوع است که در آن یک نوع داده ای به نام زیرنوع با داده دیگری ( ابرنوع ) می‌تواند جایگزین شود ، به این معنا که عناصر برنامه ، معمولاً زیرروال‌ها یا توابع ، که روی عناصر از جنس ابرنوع عمل می‌کنند،می‌توانند بر روی عناصر زیرنوع نیز عمل کنند.. اگر S زیرنوع T باشد ، رابطه زیرنوعی غالباً با S <: T نمایش داده می‌شود ، بدین معنی که هر جمله از نوع S را می توان با خیال راحت در محلی که یک جمله از نوع T مورد پذیرش است استفاده کرد. معنای دقیق چندریختی زیرنوعی شدیداً به جزئیات معنای "میتوان در محلی که مورد پذیرش است استفاده کرد" در زبان برنامه نویسی مورد نظر بستگی دارد. سیستم انواع در هر زبان برنامه نویسی اساساً رابطه زیرنوعی خود را تعریف می کند،که در صورت عدم پشتیبانی زبان از مکانیسم های تبدیل ممکن است بدیهی باشد.[۱]

به دلیل رابطه زیرنوعی، یک جمله ممکن است متعلق به بیش از یک نوع باشد. بنابراین زیرنوعی، نوعی چندریختی نوع است. در برنامه نویسی شی گرا ، اصطلاح چندریختی معمولاً برای اشاره به چندریختی زیرنوعی استفاده می‌شود، در حالی که تکنیک های چندریختی پارامتری به عنوان برنامه نویسی جنریک در نظر گرفته می شوند.

در زبان‌های برنامه نویسی تابعی غالباً امکان استفاده از زیرنوع وجود دارد. در نتیجه ، جبر لاندای ساده-نوعی با اضافه کردن نوع رکورد شاید ساده‌ترین نظام نظری است که در آن مفاهیم مفیدی از زیرنوع را می‌توان تعریف و مطالعه کرد.[۲] از آنجا که در جبر حاصل ممکن است جملات بیش از یک نوع داشته‌باشند، جبر حاصل دیگر یک نظریه نوع "ساده" نیست. از آنجا که زبانهای برنامه نویسی تابعی ، به طور تعریف ، از توابع معنایی پشتیبانی می‌کنند، که می‌توانند در رکوردها نیز ذخیره شوند ، نوع رکوردها واستفاده از زیرنوعی می‌تواند برخی از ویژگی های برنامه نویسی شی گرا را میسر کند. به طور معمول ، زبانهای برنامه نویسی تابعی برخی از شکل های هرچند معمولاً محدود چندریختی پارامتری را نیز ارائه می دهند. به طور نظری ،بررسی تعامل این دو ویژگی مورد توجه است. یک نظام نظری معمول سیستم F <sub id="mwIg"><:</sub> است . حساب های منطقی مختلفی که سعی در جذب ویژگی های نظری برنامه نویسی شی گرا دارند می‌توانند از سیستم F < :استخراج شوند.

منابع

[ویرایش]
  1. Copestake, Ann. Implementing typed feature structure grammars. Vol. 110. Stanford: CSLI publications, 2002.
  2. Cardelli, Luca. A semantics of multiple inheritance. In G. Kahn, D. MacQueen, and G. Plotkin, editors, Semantics of Data Types, volume 173 of Lecture Notes in Computer Science, pages 51–67. Springer-Verlag, 1984. Full version in Information and Computation, 76(2/3):138–164, 1988.