На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 369 370 [371] 372 373 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    Go

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

    Цитата
    CL:
    ExpandedWrap disabled
      (defmethod property ((i integer))
        (case i
          (0 "zero")
          ...
          (else "very big number")))


    в Ruby и Kotlin тоже можно, в Objective-C вроде можно через протоколы

    Это уже добавление методов.

    Ты точно статью читал :ph34r: ?
    Перепиши примеры оттуда.

    Добавлено
    Цитата korvin @
    Цитата D_KEY @
    Да, а вместо виртуальных функций можно добавлять в объект указатель на таблицу с указателями на функции. Очень удобно :D

    в объект-то зачем? если мы говорим о статически-типизированных языках, то эту таблицу можно добавить в тип.

    в динамически типизированных да, необходимо в объекте иметь метку типа, ну так она в любом случае там есть, в чем проблема? дополнительную информацию при этом можно хранить где угодно

    Ты совсем не следишь за нитью разговора?
    Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов.
      Цитата D_KEY @
      Макросы нужны для другого :)

      так справляются или нет?

      Добавлено
      Цитата D_KEY @
      Цитата korvin @
      Haskell:

      Ты фактически показал тоже самое, что и делают traits class :)

      а где у меня там
      Цитата
      использование различной информации о "типах"
      ?
        Цитата korvin @
        так справляются или нет?

        Создатели Nemerle посчитали, что нет. Разработчики Scala, желающие добавить макросы, так же считают, что они ортогональны обобщениям.
          Цитата korvin @
          Цитата D_KEY @
          Макросы нужны для другого :)

          так справляются или нет?

          Хуже.

          Цитата
          Цитата D_KEY @
          Цитата korvin @
          Haskell:

          Ты фактически показал тоже самое, что и делают traits class :)

          а где у меня там
          Цитата
          использование различной информации о "типах"
          ?

          Вот тут
          ExpandedWrap disabled
            instance Property Int where
                ...

          Ты задаешь информацию о том, как Int предоставляет то, что обещает Property.
            Цитата D_KEY @
            Ты совсем не следишь за нитью разговора?
            Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов.

            ты точно ничего не упустил из того, что я написал? про то, как в Racket сделали трейты (другие, ООПшные) вручную и обернув это в один простой макрос предоставили простую и удобную абстракцию

            Добавлено
            Цитата D_KEY @
            Хуже.

            в чем хужесть?

            Цитата D_KEY @
            Вот тут
            ExpandedWrap disabled
              instance Property Int where
                  ...

            Ты задаешь информацию о том, как Int предоставляет то, что обещает Property.

            оу, ну ок. никогда не воспринимал перегрузку как "работу с типами"
              Цитата korvin @
              Цитата D_KEY @
              Ты совсем не следишь за нитью разговора?
              Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов.

              ты точно ничего не упустил из того, что я написал? про то, как в Racket сделали трейты (другие, ООПшные) вручную и обернув это в один простой макрос предоставили простую и удобную абстракцию

              И причем тут это?

              Цитата
              Цитата D_KEY @
              Хуже.

              в чем хужесть?

              А ты покажи обобщенный код с парой специализаций для конкретных типов на макросах. И мы сравним.

              Цитата
              Цитата D_KEY @
              Вот тут
              ExpandedWrap disabled
                instance Property Int where
                    ...

              Ты задаешь информацию о том, как Int предоставляет то, что обещает Property.

              оу, ну ок. никогда не воспринимал перегрузку как "работу с типами"

              А где ты видишь перегрузку?
                Цитата D_KEY @
                Ты точно статью читал :ph34r: ?
                Перепиши примеры оттуда.

                примеры чего? примеры того, как чел борется с невыразительностью плюсов? я не очень-то понял, что именно он там пытается сделать (я не в смысле "как" -- самих трейтов, это видно, а всмысле "что"), ну да ладно. на каком языке хочешь?
                  Цитата korvin @
                  примеры чего? примеры того, как чел борется с невыразительностью плюсов?

                  :lol: Интересно, почему полностью аналогичные(в данном случае) type class'ы не вызывают у тебя такой реакции :) ?

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

                  Можешь продолжить на Java, раз уже приводил примеры на нем. Да и понятны они будут всем присутствующим.
                  На Haskell тоже можешь ;)
                    Цитата D_KEY @
                    И причем тут это?

                    при том, что макросы избавляют от ручной работы.

                    Цитата D_KEY @
                    А где ты видишь перегрузку?

                    прям здесь и вижу. а что это по-твоему? это и есть перегрузка -- вид специального полиморфизма
                      Цитата korvin @
                      при чем тут наследование? в нормальных языках методы отделены от типа и/или их свободно можно добавлять когда нужно
                      Ну я ж явно написал
                      Цитата Qraizer @
                      Несложно добавить свойства к своему классу каким-нибудь наследованием...
                      Ну, могу перефразировать
                      Цитата Qraizer @
                      Несложно добавить свойства к своему классу, например, наследованием


                      Добавлено
                      Вообще, главное было мною сказано в конце:
                      Цитата Qraizer @
                      свойства - это политика поведения, и она просто должна быть отделена от сушности, чьи свойства она описывает.
                        Цитата korvin @
                        Цитата D_KEY @
                        И причем тут это?

                        при том, что макросы избавляют от ручной работы.

                        Капитанствуешь?

                        Цитата
                        прям здесь и вижу. а что это по-твоему? это и есть перегрузка -- вид специального полиморфизма

                        Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так.
                          Цитата D_KEY @
                          Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так.

                          https://scs.senecac.on.ca/~btp200/pages/content/adhoc.html#his
                          Цитата

                          Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. No common ground has to exist amongst the definitions. Uniformity is a coincidence rather than a rule. The definitions contain distinct and possibly totally unrelated logic. Each definition works only on its set of types. The number of sets is limited by the number of definitions that we provide.

                          overloading is not (only) overriding
                          Сообщение отредактировано: korvin -
                            Цитата korvin @
                            Цитата D_KEY @
                            Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так.

                            https://scs.senecac.on.ca/~btp200/pages/content/adhoc.html#his
                            Цитата

                            Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. No common ground has to exist amongst the definitions. Uniformity is a coincidence rather than a rule. The definitions contain distinct and possibly totally unrelated logic. Each definition works only on its set of types. The number of sets is limited by the number of definitions that we provide.

                            overloading is not (only) overriding

                            Ну так где ты в своем коде увидел:
                            Цитата
                            Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments.
                              Цитата D_KEY @
                              Ну так где ты в своем коде увидел:
                              Цитата
                              Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments.

                              ExpandedWrap disabled
                                class Property a wnere
                                    property :: a -> String

                              сделав функцию классовой, я ассоциировал ее имя с различными определениями
                                Цитата korvin @
                                ExpandedWrap disabled
                                  class Property a wnere
                                      property :: a -> String

                                сделав функцию классовой, я ассоциировал ее имя с различными определениями

                                Нет, ты всего-лишь описал некий контракт :)
                                А специализация(инстанс) позволяет указать реализацию этого самого контракта.
                                В случае traits class мы имеем контракт не самого типа, а некоторый дополнительный контракт для него(типа)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 369 370 [371] 372 373 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5189 ]   [ 14 queries used ]   [ Generated: 30.07.26, 20:43 GMT ]