Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
создаём свои ad-hoc полиморфные или же перегруженные функции https://zx.oberon.org/forum/viewtopic.php?f=2&t=415 |
Страница 3 из 3 |
Автор: | budden [ 05 дек 2018, 10:10 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
Цитата: Я не оберонщик Ну не надо грязи на оберонщиков. Ситуация с терминологией в ИТ плачевна и я думаю, дело здесь в американском капитализме. Терминология - это тоже поле рыночного соревнования. Каждый маркетолог придумывает новое слово. Человек слышит новое слово, на секунду замирает, у него фильтры подвисают и в этот момент ему можно что-то впарить. В науке это тоже имеет место, поскольку при капитализме и наука является частным случаем торговли. Я здесь не агитирую за советскую власть, а просто хочу сказать о том, что оберонщики не хуже всех остальных. Скорее лучше - европейская школа ведь, Швейцария. Тихо сидим за горами на импортных золотых зубах, все тоннели заминированы, дома запасов еды на 4 месяца. Совсем не то, что англосаксы. Хотя Хаскель, будучи европейским, тоже очень агрессивен в плане придумывания и навязывания терминологии взамен уже существующей. Но это англосаксы. Мягкая сила, всё такое. Хорошо, ты привёл ссылку на википедию. Но я уже не раз сталкивался с тем, что там написан полный бред в терминологических статьях. Дальше смотрим книжку. В кругах кого эта книжка является общепризнанным источником терминологии? |
Автор: | budden [ 05 дек 2018, 10:17 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
К сожалению, нет временных ресурсов подробно читать то, что ты написал. К чему придраться по сути я уже нашёл, но пока не буду. Спасибо на самом деле, постараюсь прочитать и понять. |
Автор: | geniepro [ 05 дек 2018, 11:36 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
budden писал(а): Хотя Хаскель, будучи европейским, тоже очень агрессивен в плане придумывания и навязывания терминологии взамен уже существующей. Вообще, Хаскелл был разработан международным комитетом по ФП, хотя наглосаксы и правда там являются основным костяком. Тем не менее, в нынешнем комитете по стандартизации Хаскелла есть даже русский -- Виталий Брагилевский.budden писал(а): Дальше смотрим книжку. В кругах кого эта книжка является общепризнанным источником терминологии? Лука Карделли давно известный учёный в информатике, в основном он известен в области ООП.Так же Карделли участвовал в разработке Модулы-3 (отличается от Модулы-2 наличием дженериков, сборщика мусора). |
Автор: | geniepro [ 05 дек 2018, 11:41 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
budden писал(а): К сожалению, нет временных ресурсов подробно читать то, что ты написал. К чему придраться по сути я уже нашёл, но пока не буду. Спасибо на самом деле, постараюсь прочитать и понять. Проще говоря, твоя процедура Печ вполне себе мономорфна, ведь она принимает в качестве параметра указатель на объект типа Meta.DynamicallyTypedPtr, а дальше уже разбирается, что там в этом объекте внутри. Это некая смесь между вариантной записью и приведением к базовому типу в полиморфизме наследования. Ну да, если и называть твой способ полиморфным, то только как полиморфизм наследования -- стандартный способ для ООП. Как было написано где-то в интернете, ad hoc полиморфизм -- это когда есть разные функции с одинаковыми именами... |
Автор: | budden [ 05 дек 2018, 12:40 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
А ITEM какова? Тот же вопрос про LENGTH или SHORT/. |
Автор: | geniepro [ 05 дек 2018, 13:44 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
budden писал(а): А ITEM какова? Не знаю, что такое твой ITEM, скинь ссылку на его описание.budden писал(а): Тот же вопрос про LENGTH или SHORT/. В Обероне/КП есть перегруженные предопределённые процедуры типа ABS, ASH, LONG, MAX, ORD, SHORT, SIZE, DEC/INC, NEW -- вот это и есть пример перегрузки (ad hoc полиморфизма), но они реализованы на уровне компилятора, так что на самом деле это псевдопроцедуры.
|
Автор: | budden [ 05 дек 2018, 15:04 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
Описания у неё нет, пример выше по теме viewtopic.php?f=2&t=415&start=10#p3245 А смысл её в том, что она берёт объект любого типа (на самом деле пока только INTEGER и BOOLEAN), создаёт из него объект типа "вариант", который пока называется DynamicallyTyped и возвращает указатель на этот объект. И она реализована как встроенная функция/псевдопроцедура (я расширил компилятор). Внутри она во время компиляции по типу аргумента, известному компилятору, выбирает функцию like a NewDynamicallyTypedPtrFromINTEGER и подставляет её вместо себя. |
Автор: | geniepro [ 09 дек 2018, 22:30 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
Кстати, в языке Rust есть такое понятие, как Trait (типаж), по сути очень похоже на классы типов хаскелла... |
Автор: | geniepro [ 16 янв 2019, 21:25 ] |
Заголовок сообщения: | Re: создаём свои ad-hoc полиморфные или же перегруженные функции |
upd. Дубликат удалён. |
Страница 3 из 3 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |