На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (33) « Первая ... 21 22 [23] 24 25 ...  32 33  ( Перейти к последнему сообщению )  
> trait + impl vs class , навеяно Rust'ом
    Цитата MyNameIsIgor @
    Нужно создавать Cons<Cons<A>>. Вы не забыли, что тип показывает длину списка?
    Ага, список из трех элементов будет Cons<Cons<Cons<A>>.
      :facepalm:
        Цитата D_KEY @
        :facepalm:
        Что тебя так поразило?
          Да все :)
          Я пока со стороны посмотрю.
            Цитата D_KEY @
            Да все :)
            Я пока со стороны посмотрю.
            Ну а что ты хочешь? Я тороплюсь, на жабе отродясь не кодил.

            Добавлено
            Окай, с жабой я сфейлился. Но вот никак не могу достигнуть дзен. Все равно, какое-то ощущение, что что-то где-то не так.
              Цитата D_KEY @
              Я пока со стороны посмотрю.

              Вот это fail, йащитаю.
                Не выходит каменный цветок. Данная задача решается на D только с некоторыми допущениями (нескрываемое и поэтому легко ломаемое стирание типов). Считать ли эти допущения критическими для этой задачи или нет - пусть каждый решает сам для себя. На этом предлагаю данную тему закрыть до очередного зуда в заднице.
                  Цитата applegame @
                  Не выходит каменный цветок. Данная задача решается на D только с некоторыми допущениями (нескрываемое и поэтому легко ломаемое стирание типов). Считать ли эти допущения критическими для этой задачи или нет - пусть каждый решает сам для себя.

                  Задача и без допущений практически бесполезна в реальной жизни(однако хорошо иллюстрирует разницу между параметрическим полиморфизмом и генерацией кода). А уж с допущениями она теряет всякий смысл.

                  Мы холивар о ПП тоже заканчиваем? Жаль, мне бы хотелось получить ответ на мои последние вопросы на этот счёт...
                    Цитата D_KEY @
                    однако хорошо иллюстрирует разницу между реализациями параметрического полиморфизма
                    fixed.
                    Цитата D_KEY @
                    Мы холивар о ПП тоже заканчиваем? Жаль, мне бы хотелось получить ответ на мои последние вопросы на этот счёт...
                    Твои последние вопросы повторяются. Мы ходим по кругу. Давай лучше обобщим сказанное.

                    Все участвующие в споре знают как работают шаблоны. Но одна сторона считает это параметрическим полиморфизмом, а другая нет. Остается только аппелировать к общественному мнению. Чуть менее, чем во всех источниках декларируется, что C++ поддерживает параметрический полиморфизм. Если бы можно было организовать суд, то у меня есть веские основания считать, что ты бы его проиграл.
                    Сообщение отредактировано: applegame -
                      Цитата applegame @
                      Твои последние вопросы повторяются. Мы ходим по кругу.

                      Эти я еще повторить не успел:
                      Цитата D_KEY @
                      Qraizer, applegame

                      Тут есть параметрический полиморфизм?

                      ExpandedWrap disabled
                        class A {
                        public:
                           virtual void foo()
                           {
                                // default implementation
                           }
                        };
                         
                        void bar(A & a)
                        {
                            a.foo();
                        }


                      А если нет, то можете объяснить принципиальную разницу с шаблонами(в контексте нашего разговора, естественно)? Ведь ваш аргумент на счет "не специализируй" работает и тут :-?


                      Цитата
                      Чуть менее, чем во всех источниках декларируется, что C++ поддерживает параметрический полиморфизм.

                      Можно пример?
                        Цитата applegame @
                        Что значит бессмысленнен? Он там просто есть.

                        Его там нет, потому что нет компайл-тайм типов. Убери из D/Java/C# шаблоны/дженерики и используй везде Object. Сравни дженерик-TList в делфе (параметризуется типом элементов) и TStringList (ничем не параметризуется, тип элемента задан жестко --- TObject).
                          Цитата D_KEY @
                          Можно пример?
                          В гугле забанили?
                          English
                          Русский
                          Цитата Wikipedia:RU
                          Затем есть два способа реализации параметрического полиморфизма (в С++-сообществе обычно называемого «обобщённым программированием»). Первый способ унаследован из Си — использование бестипового указателя и приведение типа в зависимости от других данных — хотя в С++ этот способ традиционно считается неидеоматичным и опасным. Второй заключается в использовании шаблонов — но, в отличие от обычных реализаций параметрического полиморфизма, в С++ происходит автоматическая генерация семейства перегруженных мономорфных функций на основании полиморфного определения (шаблона) в соответствии с контекстами его использования — то есть параметрический полиморфизм на уровне исходного кода транслируется в ситуативный (ad hoc) на уровне машинного, за что С++ подвергается критике

                          Цитата Wikipedia:EN
                          Templates in C++ provide a sophisticated mechanism for writing generic, polymorphic code (i.e. parametric polymorphism). In particular, through the Curiously Recurring Template Pattern,


                          Добавлено
                          Цитата korvin @
                          Его там нет, потому что нет компайл-тайм типов.
                          Типы вообще тут не причем. Сишная функция printf параметрически полиморфна, как бы вам с D_KEY не хотелось обратного.
                            Цитата applegame @
                            Еще раз читаем определение ПП, вдумчиво пожалуйста и ищем там хоть какое-то упоминание динамической/статической типизации, run-time или compile-time:

                            Рукипедия, она такая, да.

                            Цитата
                            In programming languages and type theory, parametric polymorphism is a way to make a language more expressive, while still maintaining full static type-safety.


                            Цитата
                            Parametric polymorphism was first introduced to programming languages in ML in 1975.

                            --- заметь, не в Лиспе 1958-го.

                            https://en.wikipedia.org/wiki/Parametric_polymorphism
                              Цитата D_KEY @
                              А если нет, то можете объяснить принципиальную разницу с шаблонами(в контексте нашего разговора, естественно)?
                              Функция bar - полиморфна, так как может принимать не только тип A, но и всех его потомков.

                              Добавлено
                              Цитата korvin @
                              Рукипедия, она такая, да.
                              Переведи фразу на русский - зто не определение ПП.
                              Цитата korvin @
                              --- заметь, не в Лиспе 1958-го.
                              И что дальше? Введение обособленного понятия параметрического полиморфизма не нужно для динамически типизированных языков.
                                Цитата OpenGL @
                                Не понял задачу. Как во время компиляции можно определить длину списка, которая известна только в рантайме? Имхо, задача поставлена некорректно.

                                Не проверить длину списка,а гарантировать, что у двух списков одинаковая длина. Рекомендую посмотреть пример на Agda и почитать описание как и почему оно работает.

                                Добавлено
                                Цитата applegame @
                                Типы вообще тут не причем. Сишная функция printf параметрически полиморфна, как бы вам с D_KEY не хотелось обратного.

                                :wacko: Лол, вся суть полиморфизма в работе с типами.

                                Цитата
                                In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a single interface to entities of different types.

                                --- https://en.wikipedia.org/wiki/Polymorphism_...mputer_science)

                                Про сишный printf --- клиника, там вообще нет типов и типобезопасности (для чего полиморфизм и нужен в т.ч., особенно параметрический).

                                Добавлено
                                Цитата
                                JavaScript is dynamically duck typed. Generics don't make sense in that context. There aren't static types. It being supported or not is nonsensical.

                                --- http://stackoverflow.com/questions/6697832...6697862#6697862

                                Цитата
                                Parametric Polymorphism is a way to define types or functions that are generic over other types. The genericity can be expressed by using type variables for the parameter type, and by a mechanism to explicitly or implicitly replace the type variables with concrete types when necessary.
                                Write a small example for a type declaration that is parametric over another type, together with a short bit of code (and its type signature) that uses it. A good example is a container type, let's say a binary tree, together with some function that traverses the tree, say, a map-function that operates on every element of the tree.
                                This language feature only applies to statically-typed languages.

                                --- http://rosettacode.org/wiki/Parametric_polymorphism
                                Сообщение отредактировано: korvin -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (33) « Первая ... 21 22 [23] 24 25 ...  32 33


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0656 ]   [ 15 queries used ]   [ Generated: 20.07.25, 19:41 GMT ]