Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 361 362 [363] 364 365 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5431
,
|
|
|
|
Цитата D_KEY @ Можешь для начала рассказать, как делается в Haskell сериализация и восстановление. А там посмотрим. реализацией Show и Read, вручную или автоматически через deriving ![]() ![]() 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 ![]() ![]() *Main> test Cons (User {nick = "foo"}) (Cons (User {nick = "bar"}) Nil) Cons (User {nick = "foo"}) (Cons (User {nick = "bar"}) Nil) *Main> |
|
Сообщ.
#5432
,
|
|
|
|
korvin, можно ближе к нашему разговору?
|
|
Сообщ.
#5433
,
|
|
|
|
в каком смысле? вот так в хаскелле делается сериализация и восстановление, что тебя смущает?
|
|
Сообщ.
#5434
,
|
|
|
|
Цитата korvin @ в каком смысле? вот так в хаскелле делается сериализация и восстановление, что тебя смущает? Меня смущает то, что это далеко от темы контрактов и объектов. ![]() ![]() IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml); Точно не захочется? |
|
Сообщ.
#5435
,
|
|
|
|
Цитата D_KEY @ Меня смущает то, что это далеко от темы контрактов и объектов. тип и есть контракт, если у вас не так, то у вас плохо с типизацией. =) ну и что есть объект? ты не раз говорил, что в С++ -- все объект, но далеко не каждый С++-ный объект является объектом в терминах общепринятого ООП =) (так же, как и в CL, Scheme...) Цитата D_KEY @ ![]() ![]() IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml); Точно не захочется? могу скинуть ссылку на Real World Haskell, там есть главы про парсинг JSON например. думаю библиотеки для парсинга XML в Hackage тоже присутствует |
|
Сообщ.
#5436
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Меня смущает то, что это далеко от темы контрактов и объектов. тип и есть контракт В случае конкретного(неабстрактного) типа это еще и реализация контракта В любом языке.Цитата если у вас не так, то у вас плохо с типизацией. У кого у нас? Тут речь уже давно вышла за рамки С++. Цитата Цитата D_KEY @ ![]() ![]() IMyInterface obj = MyLibrary::LoadMyInterfaceFromXML(xml); Точно не захочется? могу скинуть ссылку на Real World Haskell, там есть главы про парсинг JSON например. думаю библиотеки для парсинга XML в Hackage тоже присутствует Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме? |
|
Сообщ.
#5437
,
|
|
|
|
Цитата D_KEY @ В случае конкретного(неабстрактного) типа это еще и реализация контракта В любом языке.угу, конкретный тип -- конкретная реализация, в чем проблема? Цитата D_KEY @ Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме? мы уже это обсуждали, конструктор гарантирует правильную типизацию. ![]() ![]() class Foo { public Foo(XML file) { ... } } когда объект создан, он корректен, как по своему "физическому состоянию в памяти", так и с точки зрения системы типов Добавлено если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы |
|
Сообщ.
#5438
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ В случае конкретного(неабстрактного) типа это еще и реализация контракта В любом языке.угу, конкретный тип -- конкретная реализация, в чем проблема? Проблема в том, что часто тебе нужны типы абстрактные, а не конретные, ибо когда речь идет о пользовательских типах данных, использование конретных типов означает сильную связанность, что, в свою очередь, не приводит ни к чему хорошему. Впрочем, думаю не стоит тут читать лекции по проектированию Цитата Цитата D_KEY @ Речь не о парсинге, а об интерфейсе. Как ты в статике создашь объект и будешь с ним работать, если данные о типе объекта приходят в рантайме? мы уже это обсуждали, конструктор гарантирует правильную типизацию. ![]() ![]() class Foo { public Foo(XML file) { ... } } когда объект создан, он корректен, как по своему "физическому состоянию в памяти", так и с точки зрения системы типов Ты намерено теряешь контекст обсуждения? Мы вроде бы о тайпклассах говорили, нет? Ты утверждаешь, что тебе не захочется иметь интерфейсы в рантайме. Цитата если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы Дожили! |
|
Сообщ.
#5439
,
|
|
|
|
Цитата D_KEY @ Проблема в том, что часто тебе нужны типы абстрактные, а не конретные, ибо когда речь идет о пользовательских типах данных, использование конретных типов означает сильную связанность, что, в свою очередь, не приводит ни к чему хорошему. Впрочем, думаю не стоит тут читать лекции по проектированию ![]() зачем же юлить? понятно, что ты хочешь субтипирования, которого в хаскелле нет, ну так придумай пример, где без него хаскелл садится в лужу, делов-то? =) Добавлено Цитата D_KEY @ Ты намерено теряешь контекст обсуждения? Мы вроде бы о тайпклассах говорили, нет? Ты утверждаешь, что тебе не захочется иметь интерфейсы в рантайме. а ты намеренно ничего конкретного не предлагаешь? =) и да, у меня до сих пор не возникло желания иметь интерфемы в хаскелле =) Добавлено Цитата D_KEY @ Цитата если же ты имеешь в виду, что тип объекта определяется из структуры входных данных, то у тебя плохо спроектированы типы Дожили! ![]() а что не так? =) значения разных типов спокойно читаются из строк без всякого субтипирования =) |
|
Сообщ.
#5440
,
|
|
|
|
Цитата korvin @ а ты намеренно ничего конкретного не предлагаешь? =) Так вроде даже с загрузкой объекта с определенным интерфейсом еще не разобрались. Цитата и да, у меня до сих пор не возникло желания иметь интерфемы в хаскелле =) А у меня до сих пор не возникло желание иметь вообще что-либо в хаскелле Цитата а что не так? =) значения разных типов спокойно читаются из строк без всякого субтипирования =) Да, но в этом случае тебе приходится эти типы знать |
|
Сообщ.
#5441
,
|
|
|
|
Цитата D_KEY @ Так вроде даже с загрузкой объекта с определенным интерфейсом еще не разобрались. Да, но в этом случае тебе приходится эти типы знать ![]() какая досада, нужно знать типы объектов, с которыми собираешься работать =( конечно лучше просто просить загрузить что-то типа I, а че там реально загрузится -- фиг с ним. |
|
Сообщ.
#5442
,
|
|
|
|
Цитата korvin @ какая досада, нужно знать типы объектов, с которыми собираешься работать =( конечно лучше просто просить загрузить что-то типа I, а че там реально загрузится -- фиг с ним. Ты так говоришь, будь-то нужно обязательно использовать только одно Нет, в одном случае тебе будет удобно знать все типы объектов, в другом - работать через абстрактные типы. |
|
Сообщ.
#5443
,
|
|
|
|
Цитата D_KEY @ Ты так говоришь, будь-то нужно обязательно использовать только одно Нет, в одном случае тебе будет удобно знать все типы объектов, в другом - работать через абстрактные типы. Да, Темный Владыка Саурон запрещает мне использовать разные реализации одного АТД без суптипирования. |
|
Сообщ.
#5444
,
|
|
|
|
В общем случае нет. Александреску рассматривал в своих мультиметодах возможность перемены мест параметров, если для мультиметода важна сама пара, а не их порядок. Но в вобщем случае не скажешь же, что
![]() ![]() PROCEDURE f(i:Integer, r:Double); PROCEDURE g(r:Double, i:Integer); |
|
Сообщ.
#5445
,
|
|
|
|
Цитата korvin @ Да, Темный Владыка Саурон запрещает мне использовать разные реализации одного АТД без суптипирования. Он запрещает тебе это делать в рантайме Добавлено А вообще интересно, что ты противоречишь своим предыдущим сообщениям, где утверждал, что для реализации АТД "субтипирование" необходимо. |