Комбинатор раскрытия, есть???

 
0
 
Functional languages
ava
Sajtran | 13.01.2013, 11:25
Добрый день всем, вопрос теоретикам
Существует ли комбинатор-функтор раскрытия (назвал как мог) в Хаскеле или других ленивых языках?

Как он должен выглядеть:
OCombinator g (A1 A2 A3 A4) = g A1 A2 A3 A4

Собственно он мне нужен для  разбора функций. Например, для символьного вычисления производной,
Comments (4)
ava
Ryukzak | 03.04.2013, 10:54 #
Правильно ли я понял, что речь идёт о apply как в lisp-е? Где можно написать (f a b c) либо (apply f '(a b c)).

Если так, то основная проблема такой функции - её тип. Ответы можно искать в следующих направления:
1. GADT - все варианты аргументов функций необходимо свести к одному типу и использовать. Такое решение не может быть универсальным и будет работать только на функциях использующих ваш тип.
2. Расширения вокруг kind-ов - работы с типом выражений типа.

Int :: *
Maybe :: * -> *
Maybe Bool :: *
a -> a :: *
[] :: * -> *
(->) :: * -> * -> *
ava
beroal | 10.04.2013, 17:40 #
Цитата (Sajtran @  13.1.2013,  07:25 findReferencedText)
Собственно он мне нужен для  разбора функций. Например, для символьного вычисления производной, 

Вам нужен исходный код функции? Его можно получить с помощью парсинга исходного кода — Hackage.haskell-src или Template Haskell. По-моему, это выходит за рамки языка и уж точно не имеет отношения к комбинаторной логике.
ava
dlebedev | 11.04.2013, 11:58 #
Давайте начнем с маленького. Какой тип должен иметь этот ваш комбинатор?
ava
Sajtran | 01.09.2014, 11:41 #
Цитата (dlebedev @ 11.4.2013,  13:58)
Давайте начнем с маленького. Какой тип должен иметь этот ваш комбинатор?

опс, и почему здесь уведомления не стоят

по идее что то вроде пары он должен возвращать


OCombinator( f1.f2)=  \g.\f1.\f2. (g f1 f2)


"Комбинатор неподвижной точки" тоже вроде как типа не имеет 
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit