Здравствуйте, Rtveliashvili Denys, Вы писали:
RD>Доброе время суток!
RD>Есть произвольный экземпляр некого ADT (скажем, Left 5) и хочется превратить его в конструкцию вида (C, [V]), где C это некоторое представление конструктора, а [V] — спискок аргументов. Причем так, чтобы потом можно было собрать все обратно. И очень желательно иметь возможность превращать C и V в String и назад.
RD>Поски в области generic programming in Haskell пока что наводят на мысль, что C это скорее всего Constr, а V это быть может Dynamic. Но как распилить а потом запилить обратно (потенциально, после некоторых подкручиваний) — не ясно.
gmapQ :: (forall d. Data d => d -> u) -> a -> [u] Source<br />
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.
RD>Есть ли у уважаемых специалистов идеи на этот счет?
Scrap Your Bolierplate — верное направление.
А самой задачей не поделишься? Может, попроще решение есть.