Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, samius, Вы писали:
S>>Но ты погляди, они приведение типов классифицируют как ad-hoс,
V>Я уже писал:
V>V>И вики тоже с Карделли НЕ согласна, хотя приводит его классификацию (в кач-ве сугубо ознакомительной информации, вестимо).
мало ли. Я тебе просто напоминаю.
S>>однако при этом пишут "Действительно, ad hoc полиморфизм не является истинным полиморфизмом"
V>Является прямо по определению полиморфизма.
Но здесь же об "истинном" говорится.
V>Тут Карделли показал, что он нуб, заплутал малость.
Очень тонкий и глубокомысленный аргумент.
S>>Какое совпадение! Перегруженные функции тоже не знают о том, что компилятор вызываает каждую из них как мономорфную.
V>И напротив, в случае автоматического приведения типов аргумента у нас всегда остаётся одна и та же ф-ия, а не множество их, т.е. зависимости от типа аргумента нет. Т.е., нет полиморфизма прямо по определению.
Прямо по определению откуда? У Карделли есть полиморфизм типа. У Пирса полиморфизм куска кода.
S>>Кстати, вот это твое выделенное определение полиморфизма полностью исключает ad-hoc, т.к. перегруженные функции формально разные, просто у них имя совпадает, да? Ну т.е. фиговое у тебя определение.
V>Перегруженные ф-ии — это формально несколько версий одной и той же ф-ии под разные типы аргумента.
V>Потому что у тебя нет никакого другого способа отличить одну версию от другой, кроме как через тип аргумента.
V>Что и требуется для полиморфизма.
И опять вики с тобой не согласна.
S>>В широком понимании полиморфизма (не полиморфизма функции) — полиморфизм есть.
V>В "широком" — это не в IT-области? ))
V>Полиморфизмом еще называют "нечто", скажем в Физике и Химии, что может иметь разные св-ва, будучи при этом "одним и тем же".
Да нет, в IT.
V>В случае приведения типов у нас будут одни и те же св-ва, так как функция одна и та же.
Но типы разные
S>>Все верно, но это не единственная возможность проявления ad hoc. Или Стрэчи где-то написал обратное?
V>Стрэчи ввел сам термин "ad hoc полиморфизм", поэтому я отдаю право толкования этого термина ему.
Ну хоть что-то ты ему дал.
V>Единственно что — я могу лишь уточнять, что в конкретном случае является собственно полиморфизмом, а что нет, согласно вот той ссылке на книгу по теории типов.
Она уже написана, или еще редактируется?
V>А так-то да, из начального термина обособился мем "ad hoc" и стал довольно-таки популярным даже без связи с "полиморфизмом". Но я и на это уже обращал твоё внимание, что речь тут идёт о разновидностях полиморфизма, а не о сленге среди программеров.
дада.
V>>>Ну вот выше цитата по твоей ссылке.
S>>И?
V>И то, что твоё словесное описание содержащегося по ссылке не сходится с её фактическим содержимым.
Уже лень смотреть.
V>>>В общем, тебе или стоит показать, что именно привело тебя к такому выводу:
V>>>"ограничение типа аргумента классом типа — есть ad-hoc полиморфизм".
S>>Не знаю, где ты взял, может быть я так и выразился.
V>Это твоя точная цитата, ты дважды просил меня опровергнуть именно такую твою формулировку.
Пусть так.
S>>Но само ограничение — не есть полиморфизм.
V>Бинго! ))
S>>Но является признаком его.
V>Оно является классикой жанра — необходимым, но недостаточным условием.
Достаточным, но не необходимым.
V>Да и "необходимым" оно является лишь в системе, позволяющей только "типизированный параметрический полиморфизм".
Я так и не нашел, что это такое.
V>А так-то многие примеры из мира Хаскеля откровенно глупы, увы.
Еще один тонкий аргумент.
V>Например, часто противопоставляют ф-ии с ограничениями ф-иям без ограничений. Якобы. Потому что часто авторы таких "противопоставлений" пихают пример работы со списком как якобы пример без ограничений. Какой кошмар. )) Список — это уже готовый концепт, это некий класс типов List и связанные с ним определения и ф-ии.
Если ты имеешь в виду Foldable t, то все верно. elem ad-hoc полиморфна и по нему тоже. Но если бы она писалась в точности для списка, то была бы ad-hoc полиморфна по a.
S>>Ограничение указывает на наличие специального поведения для некого типа.
V>Ограничение указывает на обобщённый код, в котором будет использоваться типизированный концепт.
V>То бишь, ограничение — это ВСЕГДА параметрический полиморфизм.
V>Что в C#, что в Хаскеле.
Ты говоришь о bounded parametric polymorphism, который не одно и тоже что и параметрический полиморфизм. Кстати, если верить вики, то ввел его именно нуб Карделли вместе с Wegner-ом.
S>>А специальное поведение — признак ad-hoc.
V>Да я сразу понял ход твоих рассуждений.
V>Поэтому сразу же привел все признаки ad hoc полиморфизма.
V>Нужны все сразу. По одному эти признаки не канают.))
Ты можешь приводить что угодно, но если это расходится с определениями, то невелика цена твоим приведениям.
S>>Вообще, универсальным образом (не зная ничего о типе) можно сделать довольно немного вещей. Отобразнить сам в себя, положить в коробку, достать из коробки (кстати, это не касается C++).
V>Положить в коробку без ограничений нельзя.
V>Работает "структурный полиморфизм", однако.
Однако, ты только что утверждал что полиморфизм один и он о функциях. Уже переобулся?
S>>Ну и там найти длину списка.
V>Найти длину списка без ограничений тоже нельзя. Работает параметрический полиморфизм.
И какие тебе нужны ограничения для нахождения длины списка? Но да, действительно параметрический (что значит, без ограничений).
S>>Все остальное (математические операции, сравнение и т.п.) требует специального знания о типе. Разве это не очевидно?
V>Твои рассуждения очевидны.
V>Но беспощадность спора была обоснованной — спор-то терминологический. ))
В чем же беспощадность заключается? В твоем беспощадном назывании Карделли нубом?
V>>>Неужели сам не увидел, что из твоей формулировки получается бредовое следствие, а именно — объявление любой мономорфной ф-ии точно так же "есть ad hoc полиморфизм".
S>>Ну, во-первых, не моей. Ты можешь прочитать об этом в той же русской вики. Во-вторых — да, для слаботипизированных языков мономорфные функции позволяют демонстрировать ad-hoc полиморфизм через приведение типа.
V>Для Хаскеля определение обобщенной ф-ии в ограничениях и мономорфной отличается не сильно.
V>Поэтому, даже вот без этого приведения типов, получается так, что если в Хаскеле определили некую мономорфную ф-ию — то обязательно получаем ad hoс полиморфизм? ))
Ты назвал Хаскель слаботипизированным?
S>>И да, он не настоящий, не истинный. Истинным называется параметрический.
V>Неправда, потому что формальные признаки классификации на это НЕ указывают.
V>В этом смысле писанина Карделли ничем не лучше праздных обсуждений на этом сайте.
V>Просто чел имеет мнение, но его постоянно поправляют. ))
Кто кроме тебя?
S>>Точную цитату Стрэчи, я, конечно, не дам. Не смог найти его лекции. Но вот все, кто на него ссылаются, трактуют его единым образом. Возьми, хотя бы русскую вики.
V>ОК, давай трактовку.
Тем не менее, определение специальных реализаций функций для разных типов в некоторых случаях является необходимостью, а не случайностью. Классическими примерами служат реализация арифметических операций (физически различная для целых и чисел с плавающей запятой) и равенства типов[en], которые на протяжении десятилетий не имели общепринятой универсальной формализации. Решением стали классы типов>>>, представляющие собой механизм явного дискретного перечисления допустимых значений переменных типа для статической диспетчеризации в слое типов. Они сводят воедино две разновидности полиморфизма, разделённые Стречи, «делая ad hoc полиморфизм менее ad hoc»[12] (игра на двойственности смысла).
V>Потому что последние 20 лет я видел тоже вполне однозначное толкование ad hoc полиморфизма и был малость удивлён, встретившись с твоей интерпретацией.
Остается догадываться, куда ты смотрел последние 20 лет... Эта трактовка используется Wadler-ом, который предложил классы типов примерно 30 лет назад.
S>>Ты так и не привел классификации, которую используешь сам.
V>Привел не раз.
V>Причем, местами совсем уж не раз. ))
ты, видимо, в какой-то параллельной реальности существуешь.
S>>Ни разу. Вот конкретно по этому вопросу. Нет нужды искать за годы.
V>Ну вот в каждом сообщении в этом споре, постоянно повторяя себя.
И в этом тоже?
V>>>Тю, так это не наезд, а в трех соснах заблудился, что ле?
S>>Так что ты называешь соснами?
V>Это противоположное рокет-саенсу.
S>>Ты вот не плутаешь, а классификацию так и не привел.
V>Я приводил определения как параметрического, так и ad hoc полиморфизма.
V>Приводил их многократно.
То что ты приводил — какая-то отсебятина. Я просил сослаться на что-нибудь, что являлось бы для тебя авторитетным источником определений параметрического и ad-hoc полиморфизмов. Но единственное, на что ты сослался — книга, в которых нет упоминаний ни того, ни другого.
V>Вот даже в этом сообщении, на которое ты отвечаешь — минимум дважды было сказано что есть полиморфизм вообще и что есть ad hoc полиморфизм.
Я же говорю, отсебятина.
V>Я даже писал многократно, что полиморфизм обобщённого вида на ограничениях — это исключительно признак параметрического полиморфизма, причем именно "типизированного параметрического полиморфизма". Что есть типизированный и нетипизированный ПП — тоже уже пояснял.
ты что ли о bounded PP? Это не то же самое что PP.
S>>Ты отвечал вот на это "Но найди мне источник, где бы говорилось что ограничение типа аргумента классом типа — есть не ad-hoc, а параметрический." и промахнулся.
V>Так я тебе сразу дал хорошую ссылку: "типизированный параметрический полиморфизм", "концепт".
V>Эта вся ссылка. Причем, по состоянию Интернета на 2017-й год — исчерпывающая.
У меня, походу, интернет не той системы. Дает ссылки на лурк, ЛОР, ixbt. Там твои авторитеты живут?
V>По крайней мере в тех работах, в которых говорится о типизированном параметрическом полиморфизме, ОБЯЗАТЕЛЬНО будет присутствовать "ограничение" типа-аргумента тем или иным способом. Потому что это не "ограничение" нифига (корявая терминология дотнета), а именно что "типизация" концепта.
В работах по bounded PP действительно используются ограничения. Но мы то говорим о PP vs ad-hoc. Я, во всяком случае.
S>>О, значит у тебя своеобразное понимание Стрэчи.
V>Ты уже второе сообщение подряд жилишь, спекулируешь, устраиваешь словесный бесполезный пинг-понг.
V>В отличие от такого бестолкового времяпрепровождения я скопировал в сообщение, на которое ты отвечаешь, определения самого Стэчи. Изволь отвечать по процитированному, или давай свои цитаты или переставай паясничать.
Я не нашел цитату в этом сообщении.
V>Возможно, ты их не понимаешь или они тебе просто "неудобны".
V>Так бывает.
V>Особенно когда нечем опровергнуть.
Ну как нечем. Кардели, Пирс, вики та, вики ся.
V>>>Привел неоднократно.
S>>Так где же в твоей классификации место приведению типов?
V>А нету.
V>Потому что не относится к полиморфизму по определению полиморфизма.
По определению полиморфной функции — естественно. А у нуба Карделли есть определение полиморфного типа.
V>>>Приведение типа является разновидностью ad hoc полиморфизма только по версии Карделли (по твоей же ссылке).
S>>Ну как? А вики?
V>Вики рассказывает о разных версиях, упоминает версию Карделли.
V>Что не так?
V>До тех пор, пока Вики не говорит "от своего лица" с неё взятки гладки.
Ну а что в отношении тебя, когда ты от лица всего полиморфизма тут ответственно заявляешь?
V>>>Стрэтч такого не задвигал.
S>>Пруф
V>Пруф что не задвигал?
Угу
V>Если бы мы обменивались остротами, было бы смешно.
А я не смеюсь, я удивляюсь, откуда ты знаешь, что он не задвигал? Или ты тут уже и от его лица тоже вещаешь?
V>>>И вики тоже с Карделли НЕ согласна, хотя приводит его классификацию (в кач-ве сугубо ознакомительной информации, вестимо).
S>>Не согласна?
V>Конечно не согласна. ))
V>Когда согласна, пишет от первого лица.
Без упоминания автора, что ли?