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

    реализацией Show и Read, вручную или автоматически через deriving
    ExpandedWrap disabled
      data List a
          = Cons a (List a)
          | Nil
          deriving (Show, Read)
       
      data User = User {
          nick :: String
      } deriving (Show, Read)
       
      test :: IO ()
      test = do
          putStrLn $ serialized
          print (read serialized :: List User)
          where
              xs = Cons (User { nick = "foo" }) (Cons (User { nick = "bar" }) Nil)
              serialized = show xs

    ExpandedWrap disabled
      *Main> test
      Cons (User {nick = "foo"}) (Cons (User {nick = "bar"}) Nil)
      Cons (User {nick = "foo"}) (Cons (User {nick = "bar"}) Nil)
      *Main>
      korvin, можно ближе к нашему разговору?
        в каком смысле? вот так в хаскелле делается сериализация и восстановление, что тебя смущает?
          Цитата korvin @
          в каком смысле? вот так в хаскелле делается сериализация и восстановление, что тебя смущает?

          Меня смущает то, что это далеко от темы контрактов и объектов.
          ExpandedWrap disabled
            IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml);

          Точно не захочется?
            Цитата D_KEY @
            Меня смущает то, что это далеко от темы контрактов и объектов.

            тип и есть контракт, если у вас не так, то у вас плохо с типизацией. =) ну и что есть объект? ты не раз говорил, что в С++ -- все объект, но далеко не каждый С++-ный объект является объектом в терминах общепринятого ООП =) (так же, как и в CL, Scheme...)

            Цитата D_KEY @
            ExpandedWrap disabled
              IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml);

            Точно не захочется?

            могу скинуть ссылку на Real World Haskell, там есть главы про парсинг JSON например. думаю библиотеки для парсинга XML в Hackage тоже присутствует
            Сообщение отредактировано: korvin -
              Цитата korvin @
              Цитата D_KEY @
              Меня смущает то, что это далеко от темы контрактов и объектов.

              тип и есть контракт

              В случае конкретного(неабстрактного) типа это еще и реализация контракта :'( В любом языке.

              Цитата
              если у вас не так, то у вас плохо с типизацией.

              У кого у нас? Тут речь уже давно вышла за рамки С++.

              Цитата
              Цитата D_KEY @
              ExpandedWrap disabled
                IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml);

              Точно не захочется?

              могу скинуть ссылку на Real World Haskell, там есть главы про парсинг JSON например. думаю библиотеки для парсинга XML в Hackage тоже присутствует

              Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме?
                Цитата D_KEY @
                В случае конкретного(неабстрактного) типа это еще и реализация контракта :'( В любом языке.

                угу, конкретный тип -- конкретная реализация, в чем проблема?

                Цитата D_KEY @
                Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме?

                мы уже это обсуждали, конструктор гарантирует правильную типизацию.
                ExpandedWrap disabled
                  class Foo {
                      public Foo(XML file) {
                          ...
                      }
                  }

                когда объект создан, он корректен, как по своему "физическому состоянию в памяти", так и с точки зрения системы типов

                Добавлено
                если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы
                  Цитата korvin @
                  Цитата D_KEY @
                  В случае конкретного(неабстрактного) типа это еще и реализация контракта :'( В любом языке.

                  угу, конкретный тип -- конкретная реализация, в чем проблема?

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

                  Цитата
                  Цитата D_KEY @
                  Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме?

                  мы уже это обсуждали, конструктор гарантирует правильную типизацию.
                  ExpandedWrap disabled
                    class Foo {
                        public Foo(XML file) {
                            ...
                        }
                    }

                  когда объект создан, он корректен, как по своему "физическому состоянию в памяти", так и с точки зрения системы типов

                  Ты намерено теряешь контекст обсуждения? Мы вроде бы о тайпклассах говорили, нет? Ты утверждаешь, что тебе не захочется иметь интерфейсы в рантайме.

                  Цитата
                  если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы

                  Дожили! :D
                    Цитата D_KEY @
                    Проблема в том, что часто тебе нужны типы абстрактные, а не конретные, ибо когда речь идет о пользовательских типах данных, использование конретных типов означает сильную связанность, что, в свою очередь, не приводит ни к чему хорошему. Впрочем, думаю не стоит тут читать лекции по проектированию :)

                    зачем же юлить? понятно, что ты хочешь субтипирования, которого в хаскелле нет, ну так придумай пример, где без него хаскелл садится в лужу, делов-то? =)

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

                    а ты намеренно ничего конкретного не предлагаешь? =) и да, у меня до сих пор не возникло желания иметь интерфемы в хаскелле =)

                    Добавлено
                    Цитата D_KEY @
                    Цитата
                    если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы

                    Дожили! :D

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

                      Так вроде даже с загрузкой объекта с определенным интерфейсом еще не разобрались.

                      Цитата
                      и да, у меня до сих пор не возникло желания иметь интерфемы в хаскелле =)

                      А у меня до сих пор не возникло желание иметь вообще что-либо в хаскелле ;)

                      Цитата
                      а что не так? =) значения разных типов спокойно читаются из строк без всякого субтипирования =)

                      Да, но в этом случае тебе приходится эти типы знать :)
                        Цитата D_KEY @
                        Так вроде даже с загрузкой объекта с определенным интерфейсом еще не разобрались.

                        Да, но в этом случае тебе приходится эти типы знать :)

                        какая досада, нужно знать типы объектов, с которыми собираешься работать =(

                        конечно лучше просто просить загрузить что-то типа I, а че там реально загрузится -- фиг с ним.
                          Цитата korvin @
                          какая досада, нужно знать типы объектов, с которыми собираешься работать =(

                          конечно лучше просто просить загрузить что-то типа I, а че там реально загрузится -- фиг с ним.

                          Ты так говоришь, будь-то нужно обязательно использовать только одно :D
                          Нет, в одном случае тебе будет удобно знать все типы объектов, в другом - работать через абстрактные типы.
                            Цитата D_KEY @
                            Ты так говоришь, будь-то нужно обязательно использовать только одно :D
                            Нет, в одном случае тебе будет удобно знать все типы объектов, в другом - работать через абстрактные типы.

                            Да, Темный Владыка Саурон запрещает мне использовать разные реализации одного АТД без суптипирования.
                            Сообщение отредактировано: korvin -
                              Цитата DesweR @
                              т.е. следующее будет верно?
                              В общем случае нет. Александреску рассматривал в своих мультиметодах возможность перемены мест параметров, если для мультиметода важна сама пара, а не их порядок. Но в вобщем случае не скажешь же, что
                              ExpandedWrap disabled
                                PROCEDURE f(i:Integer, r:Double);
                                PROCEDURE g(r:Double, i:Integer);
                              являются одинаковыми.
                                Цитата korvin @
                                Да, Темный Владыка Саурон запрещает мне использовать разные реализации одного АТД без суптипирования.

                                Он запрещает тебе это делать в рантайме :)

                                Добавлено
                                А вообще интересно, что ты противоречишь своим предыдущим сообщениям, где утверждал, что для реализации АТД "субтипирование" необходимо.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 361 362 [363] 364 365 ...  494 495


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