Re[2]: Haskell: потрошение ADT
От: Rtveliashvili Denys Великобритания  
Дата: 11.08.09 21:25
Оценка:
T>

gmapQ :: (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u] Source<br />
<span class='lineQuote level1'>T&gt;A generic query that processes the immediate subterms and returns a list of results. The list is given in the same order as originally specified in the declaratoin of the data constructors.</span>


Спасибо, thesz.

Удалось "распилить" произвольное v при помощи (toConstr v, gmapQ toDyn v). "Запиливать" в общем случае видимо надо при помощи fromConstrM. По крайней мере так хоть есть идеи насчет того, как подкинуть конструктору более одного аргумента.

T>А самой задачей не поделишься? Может, попроще решение есть.


Хочется в общем-то немного:

1. Свой вариант сериализации для стандартных для Haskell структур данных.

2. Возможность иметь упрощенный view для произвольного дерева из ADT. Что позволяет, например, в UI соорудить по нему какой-нибудь древовидный список.

3. Возможность вытащить из дерева нужный элемент, заданный списком индексов, или заменить его на другой.

4. Zipperы для чего угодно без boilerplate code (эта штука, думаю, уже давно существует).

В общем, ничего фундаментально нового. Но просто пока я не въеду в то, как это сделать самому, толку от сторонних библиотек не сильно много. Все равно с моей везучестью они "из коробки" не работают и приходится что-нибудь да подкручивать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.