OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 11 Декабрь, 2019 21:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Haskell & структуры данных
СообщениеДобавлено: Четверг, 06 Август, 2009 19:38 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Ковыряюсь со типами/структурами данных на haskell'e. Вот предположим я описал некий рекурсивный тип данных:
Код:
data Lst a = Node a (Lst a) | End


Вопрос: как это будет реализовано? В виде односвязного списка? В виде некой непрерывной области памяти (аля массив)? Или как-то ещё? Как это можно контролировать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Пятница, 07 Август, 2009 09:50 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
У Вас тут АлгТД с двумя конструкторами, а конструкторы по сути -- функции.

Кстати, Зефиров (thesz) писал, что в его эмуляторе процессора он использовал самодельный тип данных (вроде вашего) вместо стандартного списка -- получилось заметно шустрее. Там получалось выполнение цепочки функций вместо прохода по списку, что-то в этом духе...

Кстати, такие ответы лучше искать на хаскельвики
http://haskell.org/haskellwiki/Performance/Data_types


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Пятница, 07 Август, 2009 17:58 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Geniepro писал(а):
У Вас тут АлгТД с двумя конструкторами, а конструкторы по сути -- функции.


Кстати, о этих конструкторах -- а где они собственно определены? По факту я же их только задекларировал, но нигде не описал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Воскресенье, 09 Август, 2009 18:39 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Вот Вы сами себе противоречите! Декларация -- это же и есть описание! Раз продекларировали, значит описали... :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Воскресенье, 09 Август, 2009 19:01 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9164
Откуда: Россия, Орёл
Объявить, описать, определить...
Declare, descript, define...

далеко не одно и то же :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Понедельник, 10 Август, 2009 07:35 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Хаскелл -- декларативный ФЯ, так что в нём это всё одно и то же...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Четверг, 13 Август, 2009 11:55 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Скорее, в нём это одно и то же потому, что так захотели его создатели, а не потому, что он декларативный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Четверг, 13 Август, 2009 12:53 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
А смысл разделять описание типа от описаний его внутренностей? Ведь конструктор алгебраического типа данных -- это именно его внутренность...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Четверг, 13 Август, 2009 13:30 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Так объявление - это ж, вроде, АТД, а реализация его может быть разной. Про смысл разделения или совмещения спорить не буду, повторю лишь, что совмещение объявления и реализации - это задумка авторов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Четверг, 13 Август, 2009 14:41 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Valery Solovey писал(а):
Так объявление - это ж, вроде, АТД, а реализация его может быть разной.
Вы имеете в виду абстрактный тип данных (АТД), операции над которым можно реализовывать отдельно от описания структуры самого типа?
Valery Solovey писал(а):
Про смысл разделения или совмещения спорить не буду, повторю лишь, что совмещение объявления и реализации - это задумка авторов.

АлгТД описываются одинаково и в Хаскелле, и в Окамле, и в других языках с АлгТД (с учётом мелких синтаксических различий самих языков). Нет разделения на сам АлгТД и его конструкторы, из которых он состоит (а кроме этих конструкторов в нём ничего и нет-то)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Haskell & структуры данных
СообщениеДобавлено: Четверг, 13 Август, 2009 15:01 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Да, я имел в виду именно АТД.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB