Re[25]: Какой полиморфизм используется в ФЯ?
От: Павел Кузнецов  
Дата: 05.11.04 23:58
Оценка:
VladD2,

> ПК> А где я утверждал, что pattern matching является формой полиморфизма?


> Практически во всех сообщениях этой темы.

> Например: Re[17]: Какой полиморфизм используется в ФЯ?
Автор: Павел Кузнецов
Дата: 04.11.04

>

Таким образом, я вполне согласен с Gaperton'ом, когда он относит использование pattern matching при описании параметров функции к разновидности полиморфизма, т.к. в итоге будет выбрана соответствующая функция на основании типа аргумента (в общем смысле).


Ты, действительно, считаешь эти два предложения семантически эквивалентными?
  • Использование pattern matching в описании параметров для выбора подходящей функции является разновидностью полиморфизма.
  • Pattern matching является разновидностью полиморфизма.

    А эти?
  • Использование SFINAE в объявлении шаблона для выбора подходящей функции является разновидностью полиморфизма.
  • SFINAE является разновидностью полиморфизма.
    Posted via RSDN NNTP Server 1.9 gamma
  • Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[27]: Какой полиморфизм используется в ФЯ?
    От: Павел Кузнецов  
    Дата: 06.11.04 00:00
    Оценка:
    VladD2:

    > ПК>Тогда почему вот это по твоему утверждению не полиморфизм?

    > ПК>
    > ПК>poly_function( { A, B } ) -> ...;
    > ПК>poly_function( [ A, B ] ) -> ...;
    > ПК>


    > Если { A, B } — это картэж, а [ A, B ] — это список, то это несомненно полиморфная функция <...> В вот если будте, как-то так: <...> То это будет паттерн-матчинг


    А в первом случае pattern matching происходить не будет?
    Posted via RSDN NNTP Server 1.9 gamma
    Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[26]: Какой полиморфизм используется в ФЯ?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.11.04 07:07
    Оценка: -4
    Здравствуйте, Павел Кузнецов, Вы писали:

    >> Практически во всех сообщениях этой темы.

    >> Например: Re[17]: Какой полиморфизм используется в ФЯ?
    Автор: Павел Кузнецов
    Дата: 04.11.04

    >>

    Таким образом, я вполне согласен с Gaperton'ом, когда он относит использование pattern matching при описании параметров функции к разновидности полиморфизма, т.к. в итоге будет выбрана соответствующая функция на основании типа аргумента (в общем смысле).


    ПК>Ты, действительно, считаешь эти два предложения семантически эквивалентными?


    Я считаю, что ты выкручиваешся.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Какой полиморфизм используется в ФЯ?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 06.11.04 07:07
    Оценка:
    Здравствуйте, Павел Кузнецов, Вы писали:

    >> ПК>Тогда почему вот это по твоему утверждению не полиморфизм?

    >> ПК>
    >> ПК>poly_function( { A, B } ) -> ...;
    >> ПК>poly_function( [ A, B ] ) -> ...;
    >> ПК>


    >> Если { A, B } — это картэж, а [ A, B ] — это список, то это несомненно полиморфная функция <...> В вот если будте, как-то так: <...> То это будет паттерн-матчинг


    ПК>А в первом случае pattern matching происходить не будет?


    Какая разница? Главное, что ты демонстрируешь перегрузку называя ее поттерн-матчингом.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[21]: Какой полиморфизм используется в ФЯ?
    От: beroal Украина  
    Дата: 06.11.04 19:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Да они на каждом шагу. Те же кортежи (тюплы), работа с незакрытыми методами просыми типами и т.п. ... Ты лучше покажи мне хтя бы одно средство инкапсуляции в ФЯ, кроме разве что вариантрых типов.
    В Haskell можно скрывать отдельные поля кортежа, методы класса в списке экспортов модуля (т.е. файла) (http://www.haskell.org/onlinereport/modules.html#sect5.2). Какие ещё средства инкапсуляции остались?
    Re[29]: Какой полиморфизм используется в ФЯ?
    От: Павел Кузнецов  
    Дата: 07.11.04 01:46
    Оценка: -1
    VladD2:

    >>> ПК>Тогда почему вот это по твоему утверждению не полиморфизм?

    >>> ПК>
    >>> ПК>poly_function( { A, B } ) -> ...;
    >>> ПК>poly_function( [ A, B ] ) -> ...;
    >>> ПК>


    >>> Если { A, B } — это картэж, а [ A, B ] — это список, то это несомненно полиморфная функция <...> В вот если будте, как-то так: <...> То это будет паттерн-матчинг


    > ПК> А в первом случае pattern matching происходить не будет?


    > Какая разница?


    Разница такая, что ты в своем сообщении, на которое я отвечал, противопоставил полиморфизм и pattern matching, хотя в данных случаях, как мы уже установили ранее, второе используется для достижения первого.

    > Главное, что ты демонстрируешь перегрузку называя ее поттерн-матчингом.


    1) Я не называю перегрузку pattern matching (в противном случае, приведи, пожалуйста, соответствующие ссылки).
    2) Без добавления pattern matching в определение функций мы получим набор одинаковых функций, т.к. единственное, чем они отличаются — patterns, использованные в объявлении.

    Итого: важно сочетание одного с другим. И получившийся результат — использование pattern matching в объявлении перегруженных функций для обеспечения возможности выбора между ними — и есть один из вариантов полиморфизма. О чем так долго твердили большевики
    Posted via RSDN NNTP Server 1.9 gamma
    Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[27]: Какой полиморфизм используется в ФЯ?
    От: Павел Кузнецов  
    Дата: 07.11.04 01:58
    Оценка:
    VladD2:

    > ПК> Ты, действительно, считаешь эти два предложения семантически эквивалентными?


    > Я считаю, что ты выкручиваешся.


    1) Этого я у тебя не спрашивал. 2) Это является переходом к обсуждению моих действий, что к ранее обсуждаемой теме не относится, и мне мало интересно.

    Так ответь, пожалуйста, на тот вопрос, что я задавал. А именно, являются ли следующие два предложения эквивалентными:
  • Использование pattern matching в описании параметров для выбора подходящей функции является разновидностью полиморфизма.
  • Pattern matching является разновидностью полиморфизма.

    Т.к. если ты эти предложения эквивалентными не считаешь, то твое заявление о том, что я утверждал второе, ты так и не подтвердил.

    Если же ты считаешь эти два предложения эквивалентными, то дальше разговор можно не продолжать, т.к. это будет означать, что у нас с тобой совершенно различные взгляды на логику. А разговаривать с собеседником, использующим принципиально другие правила вывода, мне представляется абсолютно неконструктивным.
    Posted via RSDN NNTP Server 1.9 gamma
  • Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[22]: Какой полиморфизм используется в ФЯ?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.11.04 12:44
    Оценка:
    Здравствуйте, beroal, Вы писали:

    B>В Haskell можно скрывать отдельные поля кортежа, методы класса в списке экспортов модуля (т.е. файла) (http://www.haskell.org/onlinereport/modules.html#sect5.2). Какие ещё средства инкапсуляции остались?


    К сожалению я не знаком (покрайней мере так близко) с Хаскелем. Так что ничего определенного сказать не могу.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[28]: Какой полиморфизм используется в ФЯ?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 07.11.04 12:44
    Оценка:
    Здравствуйте, Павел Кузнецов, Вы писали:

    ПК>1) Этого я у тебя не спрашивал. 2) Это является переходом к обсуждению моих действий, что к ранее обсуждаемой теме не относится, и мне мало интересно.


    Не тебе говорить о подмене темы, так как ты только этим и знимашся все последние посты.

    Вступать в демагогические обсуждения эквивалентности высказываний я не собираюсь. Если ты согласен с тем, что паттерн-матчинг и перегрузка функций вещи разные, и если ты согласен с тем, что паттерн-матчинг не является сам по себе полиморфизмом, то обсуждать больше нечего так как наши мнения сходятся.

    Правда тогда становится очевидным, что поддежка Гапертона была не более чем попыткой увести разговор от темы подменив ее общей философией. Ну, а как это называется ты знаешь не хуже меня.

    ПК>Так ответь, пожалуйста, на тот вопрос, что я задавал.


    А я не хочу идти у тебя на поводу. Твои цели мне более чем ясны. Потокать им я не считаю нужным.




    Далее я всего лишь поясняю почему я не хочу двать ответы на подобные вопросы.


    ПК> А именно, являются ли следующие два предложения эквивалентными:

    ПК>
  • Использование pattern matching в описании параметров для выбора подходящей функции является разновидностью полиморфизма.
    ПК>
  • Pattern matching является разновидностью полиморфизма.

    Ошибочны оба утверждения. И фактическая эквивалентность тут просто не причем. Разница между этими предложениями не имеет никакого отношения к делу. Это часть откровенной демагогии которая раскручивается здесь вот уже несколко постов. (Надо признать, что не без успеха.)

    Этот вопрос из серии "Бросил ли ты уже пить коньяк по утрам?". Как не овечай все равно будет глупость. Одеинственно верный ответ в таких ситуациях — впорос сформулирован некорректно, я никогда не пил коньяк по утрам.

    Лучше я попытаюсь вернуть дискуссию к исходному вопросу и продемонстрирую очевидность этой демагогии.

    Итак, вот с чего начался этот спор:

    G>А во вторых, при разрешении полиморфного вызова учитываются не только типы, но и значения аргументов (в "обычных" языках — только типы). Причем, в разрешении вызова принимаются во внимание все аргументы (а не только тип неявного аргумента виртуальной функции — объект). Это самое главное отличие полиморфизма ФЯ от обычных языков.

    В "обычных языках" это называется мутиметодами. Они кое где реализованы. А кое где реализуются имеющимися средствами.


    Здесь я к сожалению не обратил внимания на превую часть фразы которая содержала ложные предпосылки. А именно "при разрешении полиморфного вызова учитываются не только типы, но и значения аргументов". При полиморфных вызовах никакие значения не учитываются. Тут Гапертон говорил о патерн-матчинге, но так как он говорил о полиморфизме, то я прост не заметил ошибки в логике. Несомненно полиморфизм можно эмулировать на обычных операциях ветвления и ручном хранении информации о типах, но это всего лишь эмуляция. И такая эмуляция возможна в любых языках. Даже в С на базе if-ов или switch-ей. И тогда разговоры о полиморфизме в ФЯ становятся форменной демагогией, так как это не является свойством ФЯ, а всего лишь доказывает, что и на ФЯ можно эмулировать некоторое поведение.

    Я же отвечал на вторую половину этой фразы, а именно на "Причем, в разрешении вызова принимаются во внимание все аргументы", подразумевая, что речь идет о полиморфизме, причем, полиморфизме обеспечиваемом языком, а не эмулируемом.

    Когда я понял, что именно я не понял в его высказывании, я обратил его внимание на то, что паттерн-матчинг который тот неявно подразумевал не является средством обеспечения полиморфизма:
    Re[14]: Какой полиморфизм используется в ФЯ?
    Автор: VladD2
    Дата: 02.11.04


    На что он заявил Re[15]: Какой полиморфизм используется в ФЯ?
    Автор: Gaperton
    Дата: 02.11.04

    А паттерн-матчинг я за полиморфизм не принимаю, это разные вещи. Применение паттерн-матчинга при задании аргументов функции - вот это является одним из самых мощных способов достижения полиморфизма в ФЯ.


    Что же это заявление должно было обозначать? Если товоришь проглотил тот факт, что речь идет об эмуляции, то это демагогия так как эмуляция не может быть свойством языка, или их группы (ФЯ). Если же все же имеется в виду, что паттерн-матчинг непосредственно обеспечивает поддержку полиморфизма, то это а) неправда, б) противоречит первому выделенному фрагменту. В общем, как не крути — это форменная демагогия.

    Далее ты полез его защищать не смотря на то что товаришь без малейшего намека на приличие продолжил развивать демагогию переходом на личность оппонента и косвенными оскорблениями. В процессе защиты ты мне начал доказывать
    Автор: Павел Кузнецов
    Дата: 04.11.04
    , совершенно странные вещи:

    if здесь совершенно ни при чем, т.к. он строится так, что ему "известно" об используемых "типах" (явный выбор ветвлением), в то время как полиморфизм требует отсутствия этого знания у полиморфного кода.


    Далее ты начал расскзаывать про какое-то гипотетическое поведение АДЫ (которую ты явно так же не знаешь как и я) и далать на базе этого какие-то выводы. Тебе не устроили определения из Википедии и в конце концов обсуждение вылелось в натуральную демагогию.

    Даже здравые размышления Quintanar-а: Re[20]: Какой полиморфизм используется в ФЯ?
    Автор: Quintanar
    Дата: 04.11.04
    тебя не остановили. В итоне ты перешел на доказательство неких фразиологических соответствий вместо обсуждения сути проблемы.

    По сему предлагаю ответить на поставленные в начале обсуждения вопросы и закрыть таким образом тему.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
  • Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[29]: Какой полиморфизм используется в ФЯ?
    От: Аноним  
    Дата: 07.11.04 16:27
    Оценка:
    Что-то много эмоций и мало логики.
    Понятие полиморфизм означает применимость функции к разным типам.
    Поскольку эрланг бестиповый язык, никакого полиморфизма в нем не может быть по определению.
    Вот это
    > poly_function( { A, B } ) -> ...;
    > poly_function( [ A, B ] ) -> ...;
    не полиморфная фунция.

    Применить же сопоставление в одной и той же функции к спискам и кортежам в типизированном языке не получится.

    И еще о терминологии. Термины "параметрический полиморфизм" и "полиморфизм ad-hoc" реально используются, а вот "динамический/статический полиморфизм" -нет. Говорят о динамической или статической диспетчеризации.
    Re[29]: Какой полиморфизм используется в ФЯ?
    От: Павел Кузнецов  
    Дата: 08.11.04 01:12
    Оценка:
    VladD2,

    > <... риторика и очередная порция наездов пропущена ...>


    > ПК> А именно, являются ли следующие два предложения эквивалентными:

    > ПК>
  • Использование pattern matching в описании параметров для выбора подходящей функции является разновидностью полиморфизма.
    > ПК>
  • Pattern matching является разновидностью полиморфизма.

    > Ошибочны оба утверждения. И фактическая эквивалентность тут просто не причем.


    Очень даже причем, т.к. я был согласен с первым и нигде не утверждал второго, в то время как ты приписывал мне высказывания второго из этих утверждений "практически во всех сообщениях этой темы". Впредь не надо торопиться делать подобные заявления, раз ты не можешь подтвердить их цитатами, и все будет хорошо.
    Posted via RSDN NNTP Server 1.9 gamma
  • Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
    Re[22]: Какой полиморфизм используется в ФЯ?
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 08.11.04 05:06
    Оценка:
    Здравствуйте, VladD2, Вы писали:
    VD>Выбор — это не полиморфизм. Полиморфизм — это отсуствие разницы в использовании объектов разного типа.
    Влад, перестань упираться. Ок, паттерн матчинг — это отсутствие разницы в использовании объектов разного типа. Где я не прав?
    ... << RSDN@Home 1.1.4 beta 3 rev. 185>>
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[30]: Какой полиморфизм используется в ФЯ?
    От: Gaperton http://gaperton.livejournal.com
    Дата: 08.11.04 22:34
    Оценка: +2
    Здравствуйте, Аноним, Вы писали:

    А>Что-то много эмоций и мало логики.

    А>Понятие полиморфизм означает применимость функции к разным типам.
    А>Поскольку эрланг бестиповый язык, никакого полиморфизма в нем не может быть по определению.
    Неправильно. Бестиповым языком можно назвать какой-нибудь Forth. А эрланг — это динамически типизированный язык. Если сомневаешься в наличии в нем типов, отсылаю к мануалу по Erlang.

    А>Вот это

    >> poly_function( { A, B } ) -> ...;
    >> poly_function( [ A, B ] ) -> ...;
    А>не полиморфная фунция.
    Неправильно. Это — полиморфная функция.

    А>Применить же сопоставление в одной и той же функции к спискам и кортежам в типизированном языке не получится.

    Во-первых, в статически типизированном, конечно. А во-вторых — можно я попробую — вдруг все-таки получится? Вот пример на очень статически типизированном Clean (система типов Милнера-Майкрофта):

    ::MyType = MyTuple Int Int | MyList [Int]
    
    Funct:: MyType -> Int
    Funct ( MyTuple a b ) = a
    Funct ( MyList [ a, b ] ) = a


    Вот и все. А ты боялся. В статически типизированном Хаскеле (и ML) будет то же самое.
    Причем, практически для любых разумных сочетаний фактических типов эелементов А и В возможно определить такой алгебраический тип, что в ML и Хаскель будет то же самое, что и в эрланг (пусть тебя не пугает Int). И наоборот, в "бестиповом" эрланге можно добавить такие же ограничения на типы элементов. А потом прогнать dyalizer, чтобы он статически нашел ошибки типизации.

    Впрочем, если не устраивает пример на Clean, я могу привести пример на С++, где такое же сопоставление будет произведено одним простым виртуальным вызовом.
    Re[31]: Какой полиморфизм используется в ФЯ?
    От: Аноним  
    Дата: 09.11.04 06:26
    Оценка:
    Здравствуйте, Gaperton, Вы писали:

    G>А эрланг — это динамически типизированный язык.

    "Динамически типизированный" и бестиповый — это одно и то же.

    А>>Вот это

    >>> poly_function( { A, B } ) -> ...;
    >>> poly_function( [ A, B ] ) -> ...;
    А>>не полиморфная фунция.
    G>Неправильно. Это — полиморфная функция.
    Повторюсь. Полиморфная функция-функция,применимая к объектам разных типов. В эрланге все функции имеют один тип аргумента — терм.

    G>
    G>::MyType = MyTuple Int Int | MyList [Int]
    
    G>Funct:: MyType -> Int
    G>Funct ( MyTuple a b ) = a
    G>Funct ( MyList [ a, b ] ) = a
    G>

    Вы наверное удивитесь, если я скажу, что это тоже не полиморфная функция? Посмоторите на её сигнатуру.
    G> в "бестиповом" эрланге можно добавить такие же ограничения на типы элементов.
    А после этого он превратится в типизированный.

    Полиморфизм нужен чтобы обходить ограничения, накладываемые системой типов. Если никаких
    ограничений нет, значит нет и типов и полиморфизм ни к чему.
    Re[32]: Какой полиморфизм используется в ФЯ?
    От: Аноним  
    Дата: 09.11.04 06:53
    Оценка: -1
    А>"Динамически типизированный" и бестиповый — это одно и то же.

    бред.
    Для примера сравни безтиповый ассемблер, в котором тип данных
    определяется исключительно применяемой операцией. Ты можешь
    сложить два числа, хотя там могут быть указатели.
    Ошибки не будет. Динамически типизируемый язык выдаст ошибку.
    Безтиповых языков сейчас, наверное, кроме ассемблера и нет.
    Хотя можно поспорить насчет tcl.
    Re[4]: Какой полиморфизм используется в ФЯ?
    От: Аноним  
    Дата: 09.11.04 06:57
    Оценка:
    Пример, пример в студию. Интересно, и я думаю, не только мне.

    http://slate.tunes.org/
    Re[32]: Какой полиморфизм используется в ФЯ?
    От: Nick_ Россия  
    Дата: 09.11.04 07:00
    Оценка:
    Здравствуйте, Аноним, Вы писали:

    G>>А эрланг — это динамически типизированный язык.

    А>"Динамически типизированный" и бестиповый — это одно и то же.
    Сомнительное утверждение. Не мог бы ты это обосновать?

    А>Полиморфизм нужен чтобы обходить ограничения, накладываемые системой типов. Если никаких

    А>ограничений нет, значит нет и типов и полиморфизм ни к чему.
    Ну а это вообще бред. Полиморфизм — это более сложная система типов.
    Бывают простые системы типов, в которых тип — это "константа". Например как в паскале. А бывают системы типов в которых тип может зависить от другого типа.
    Например функция берущая первый элемент списка берет список элементов типа A и возвращает элемент типа A.
    First :: [A] -> A

    A — это тип и он является параметром других типов: [A] — список элементов типа A, [A] -> A[/code] — тип функции принимающей один аргумент — список A и возвращающей элемент типа A

    Разные системы типов, естественно, накладывают разные ограничения на программу. Но полиморфизм — это не сбоку приделка к простой системе типов, а ее обобщение.
    Re[33]: Какой полиморфизм используется в ФЯ?
    От: Аноним  
    Дата: 09.11.04 08:14
    Оценка:
    Здравствуйте, Nick_, Вы писали:

    А>>"Динамически типизированный" и бестиповый — это одно и то же.

    N_>Сомнительное утверждение. Не мог бы ты это обосновать?
    Некоторая сущность (в данном случае тип) присутствует в языке, если в нем имеются средства для её выражения. В противном случае все эти "типы" существуют только в нашем сознании, но никак ни в программах, ни в языке.

    А>>Полиморфизм нужен чтобы обходить ограничения, накладываемые системой типов. Если никаких

    А>>ограничений нет, значит нет и типов и полиморфизм ни к чему.

    N_>Разные системы типов, естественно, накладывают разные ограничения на программу. Но полиморфизм — это не сбоку приделка к простой системе типов, а ее обобщение.

    Ну правильно, обобщение. Но вот зачем понадобилось это обобщение? Очевидно, как раз потому, что ограничения, накладываемые мономорфной системой типов слишком серьезные.
    Re[32]: Какой полиморфизм используется в ФЯ?
    От: Gaperton http://gaperton.livejournal.com
    Дата: 09.11.04 11:14
    Оценка:
    Здравствуйте, Аноним, Вы писали:

    А>Здравствуйте, Gaperton, Вы писали:


    G>>А эрланг — это динамически типизированный язык.

    А>"Динамически типизированный" и бестиповый — это одно и то же.
    Кто это вам сказал?

    А>>>Вот это

    >>>> poly_function( { A, B } ) -> ...;
    >>>> poly_function( [ A, B ] ) -> ...;
    А>>>не полиморфная фунция.
    G>>Неправильно. Это — полиморфная функция.
    А>Повторюсь. Полиморфная функция-функция,применимая к объектам разных типов. В эрланге все функции имеют один тип аргумента — терм.
    Вы не правы. Не стоит повторяться, я и так прекрасно вас понял. К мануалу я уже вас отсылал, раз не помогло, приведу цитату.

    2 Data Types
    2.1 Terms
    Erlang provides a number of data types which are listed in this chapter. A piece of data of any data type is called a term.
    2.2 Number
    2.3 Atom
    2.4 Binary
    2.5 Reference
    2.6 Fun
    2.7 Port Identifier
    2.8 Pid
    2.9 Tuple
    2.10 List
    2.11 String
    2.12 Record
    2.13 Boolean
    2.14 Escape Sequences
    2.15 Type Conversions


    G>>
    G>>::MyType = MyTuple Int Int | MyList [Int]
    
    G>>Funct:: MyType -> Int
    G>>Funct ( MyTuple a b ) = a
    G>>Funct ( MyList [ a, b ] ) = a
    G>>

    А>Вы наверное удивитесь, если я скажу, что это тоже не полиморфная функция? Посмоторите на её сигнатуру.
    Намек понял. Формально — да, это один тип. А вы не сильно удивитесь, если я скажу, что определение типа несложно разбить на три определения, так, чтобы и tuple и list являлись отдельными типами? И что это у нас поменяет? Радикально — ничего, но функция станет полиморфной, так?

    G>> в "бестиповом" эрланге можно добавить такие же ограничения на типы элементов.

    А>А после этого он превратится в типизированный.
    Что-то я не понял. То есть если я напишу так

    funct( { X, Y } ) -> X * Y.

    то эрланг бестиповый язык. А если я добавлю вот это

    funct( { X, Y } ) where is_integer( X ), is_integer( Y ) -> X * Y.

    то он превратится в типизированный (чем, кстати, не замедлит воспользоваться компилятор). И это все не меняя самого языка. Чудеса? Как будем разрешать этот забавный казус?

    А>Полиморфизм нужен чтобы обходить ограничения, накладываемые системой типов. Если никаких

    А>ограничений нет, значит нет и типов и полиморфизм ни к чему.
    Понятна точка зрения. Не согласен с вашим пониманием полиморфизма. Попробуйте перенести эти рассуждения на Smalltalk. Он динамически типизирован, т. е. в ваших терминах "бестиповый". Ваши рассуждения сведутся к абсурду. Если я не прав, напишите здесь про Smalltalk подробно.
    Re[30]: Какой полиморфизм используется в ФЯ?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 09.11.04 14:10
    Оценка:
    Здравствуйте, Павел Кузнецов, Вы писали:

    ПК>Очень даже причем, т.к. я был согласен с первым и нигде не утверждал второго, в то время как ты приписывал мне высказывания второго из этих утверждений "практически во всех сообщениях этой темы". Впредь не надо торопиться делать подобные заявления, раз ты не можешь подтвердить их цитатами, и все будет хорошо.


    Оба утверждения не верны.
    ... << RSDN@Home 1.1.4 beta 3 rev. 207>>
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.