Re[39]: «Собаку съел»
От: samius Япония http://sams-tricks.blogspot.com
Дата: 20.02.17 19:46
Оценка: -1
Здравствуйте, 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>Когда согласна, пишет от первого лица.
Без упоминания автора, что ли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.