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

    я этого не утверждал, я к этому склонялся
    Цитата korvin @
    хотя вообще интересный вопрос, является ли субтипирование необходимым.

    и где я противоречу? напомню, что
    Цитата korvin @
    в общем случае в хаскелле вообще нет абстрактных типов

    в Хаскелле нет поддержки АТД как языковой абстракции
      Цитата korvin @
      Цитата D_KEY @
      А вообще интересно, что ты противоречишь своим предыдущим сообщениям, где утверждал, что для реализации АТД "субтипирование" необходимо.

      я этого не утверждал, я к этому склонялся

      Ок.

      Цитата
      в Хаскелле нет поддержки АТД как языковой абстракции

      Объясни мне, зачем тебе формальное наличие АТД, если есть тайпклассы, которые позволяют делать все тоже самое(правда не в рантайме)?
        Цитата D_KEY @
        Объясни мне, зачем тебе формальное наличие АТД

        мне оно не нужно.

        Цитата D_KEY @
        если есть тайпклассы, которые позволяют делать все тоже самое(правда не в рантайме)?

        не позволяют. я тебе приводил пример со списком. и не раз.
        потому что типы описывают данные. с которыми мы работаем в рантайме.
        а тайпклассы описывают типы. с которыми мы работаем в компайлтайме.
          Цитата korvin @
          Цитата D_KEY @
          если есть тайпклассы, которые позволяют делать все тоже самое(правда не в рантайме)?

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

          Так я тоже самое и написал, с чем ты споришь?
          Т.е. они не позволяют делать это в рантайме, но они описывают тоже самое для проверки типа в компайлтайме.
          Сообщение отредактировано: D_KEY -
            Цитата D_KEY @
            Так я тоже самое и написал, с чем ты споришь?
            Т.е. они не позволяют делать это в рантайме, но они описывают тоже самое для проверки типа в компайлтайме.

            ты не понял... АТД описывает свойства данных, а тайпкласс описывает свойства типа данных. у них предмет описания разный.
              Цитата korvin @
              ты не понял... АТД описывает свойства данных, а тайпкласс описывает свойства типа данных. у них предмет описания разный.

              Тип нужен исключительно для описания свойств данных. Описывая тип, ты описываешь свойства данных. В случае абстрактных типов это не отличимо.

              Добавлено
              Т.е. в случае интерфейсов ты описываешь контракт объектов, в случае тайпкласса - описываешь требования к типу, которым описывается контракт объектов.
                Цитата D_KEY @
                Тип нужен исключительно для описания свойств данных. Описывая тип, ты описываешь свойства данных. В случае абстрактных типов это не отличимо.

                Т.е. в случае интерфейсов ты описываешь контракт объектов, в случае тайпкласса - описываешь требования к типу, которым описывается контракт объектов.

                я не описываю требования к типу с помощью тайпкласса, я описываю набор операций над типами.
                  Цитата korvin @
                  я не описываю требования к типу с помощью тайпкласса, я описываю набор операций над типами.

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

                  Добавлено
                  Цитата haskell.org/haskellwiki/Abstract_data_type
                  In Haskell, it is also possible to describe an interface to a data type using the Type class concept. This provides a mechanism for making the implementation of operations for a data type abstract as well. For example, the above interface for the abstract Tree data type might be described as:
                  ExpandedWrap disabled
                    class Tree t where
                        nil   :: t a
                        node  :: t a -> a -> t a -> t a
                        left  :: (MonadPlus m) => t a -> m (t a)
                        right :: (MonadPlus m) => t a -> m (t a)
                        value :: (MonadPlus m) => t a -> m a


                  Note that this description is even more abstract than the description of the Tree abstract data type above. This interface will also make the implementation of the tree abstract (not just the element type). This interface allows the user to change the implementation of the tree data type later easily.

                  http://www.haskell.org/haskellwiki/Abstract_data_type
                  Сообщение отредактировано: D_KEY -
                    Цитата D_KEY @
                    Ты можешь сделать какой-нибудь Ord тайпклассом в одном языке или интерфейсом/абстрактным классом в другом - это ничего не изменит, программист хотел задать требования наличия соответствующих операций с соответствующей семантикой.

                    Да сколько можно-то.

                    Интерфейсы приводят к субтипированию (C++, Java, C#, Delphi, Go, Racket, etc.).
                    Тайпклассы -- нет.

                    К чему приводит эта разница я уже написал:

                    1) невозможность использования разных типов с одним тайпклассом в одном контексте
                    ExpandedWrap disabled
                      typeclass C
                      type A : C
                      type B : C
                      xs {a : C} : [a] = [A, B] -- ошибка типизации


                    2) потеря статической информации о типе при использовании интерфейсов
                    ExpandedWrap disabled
                      interface I
                      type A <: I
                      type B <: I
                      xs : [I] = [A, B] -- нет ошибки типизации
                      head xs -- имеет тип I


                    все, больше нечего обсуждать по этому вопросу.
                    Сообщение отредактировано: korvin -
                      Цитата korvin @
                      Цитата D_KEY @
                      Ты можешь сделать какой-нибудь Ord тайпклассом в одном языке или интерфейсом/абстрактным классом в другом - это ничего не изменит, программист хотел задать требования наличия соответствующих операций с соответствующей семантикой.

                      Да сколько можно-то.

                      Интерфейсы приводят к субтипированию (C++, Java, C#, Delphi, Go, Racket, etc.).
                      Тайпклассы -- нет.

                      К чему приводит эта разница я уже написал:

                      1) невозможность использования разных типов с одним тайпклассом в одном контексте
                      ExpandedWrap disabled
                        typeclass C
                        type A : C
                        type B : C
                        xs : [C] = [A, B] -- ошибка типизации


                      2) потеря статической информации о типе при использовании интерфейсов
                      ExpandedWrap disabled
                        interface I
                        type A <: I
                        type B <: I
                        xs : [I] = [A, B] -- нет ошибки типизации
                        head xs -- имеет тип I


                      все, больше нечего обсуждать по этому вопросу.

                      Так с этим никто не спорит. Только это не противоречит тому, что пишу я.
                        есть структура
                        ExpandedWrap disabled
                          typedef struct mystruct {
                          DWORD f1;
                          WORD f2;
                          DWORD f3
                          }

                        в некоторых случаях её размер равен 10, а в некоторых 12, вся проблема в выравниваниях смещений полей. всё зависит от парметров компиляции.
                        в delphi я могу указать packed record и структура будет иметь размер тот который должен, а не тот который с выравниваниями. Т.е. я могу использовать одновременно выровненные структуры и невыровненные. Внимание вопрос: как тоже самое сделать в C++?
                          В старом стандарте это платформозависимо, гугли pragma pack, поддерживается почти всеми реализациями.
                          В новом стандарте что-то должно было быть стандартное на тему выравнивания, но сейчас не могу посмотреть :)
                          Сообщение отредактировано: D_KEY -
                            да плевать мне на плаформу! >:( я хочу чтобы вот одна структура была размерностью как положено (с выравниваниями), а другая структура без выравниваний и всё в одном проекте и в одном .cpp файле.
                            Сообщение отредактировано: Ahilles -
                              Ahilles, так я же сказал pragma pack. Или гугл не работает у тебя?
                                блин, а я потроллить хотел, не получилось. в следующий раз какую-нибудь тему по интереснее придумаю
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 362 363 [364] 365 366 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4757 ]   [ 14 queries used ]   [ Generated: 31.07.26, 00:03 GMT ]