Разыскивается композитор
Oct. 29th, 2007 01:01 amПериодически жизнь возвращает меня к моей библиотеке композиторов. Её идея проста и в основном представляет не более чем упражнение для пытливого ума. Задача - выразить сложные композиции через единственный комбинатор (.). Например,
что позволяет устраивать point-free ралли,
Текущая версия библиотеки
( под катом )
Сегодня по ходу дела мне потребовалась такая композиция
У меня её нет :( В принципе можно написать генератор, который будет перебирать всё дерево композиций вширь, в надежде найти нужный тип. Но может кто справится усилием интеллекта? ;)
С использованием чего-то, кроме (.), не предлагать - сам умею.
UPD: Задача не имеет решения, спасибо
lomeo, натолкнувшему на мысль.
-- f(g(x y)) == (.##) f g x y
(.##) :: (a -> b) -> (c -> d -> a) -> c -> d -> b
(.##) = (.) . (.)
что позволяет устраивать point-free ралли,
concatMap = concat .## map
Текущая версия библиотеки
( под катом )
Сегодня по ходу дела мне потребовалась такая композиция
-- f (g x) (h y) = opUnknown f g h x y
opUnknown : :(a -> b-> c) -> (d -> a) -> (e -> b) -> d -> e -> c
У меня её нет :( В принципе можно написать генератор, который будет перебирать всё дерево композиций вширь, в надежде найти нужный тип. Но может кто справится усилием интеллекта? ;)
С использованием чего-то, кроме (.), не предлагать - сам умею.
UPD: Задача не имеет решения, спасибо
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)