GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (5)След. > >>   Поиск:  
 Автор Тема: метафункции
shuklin
Сообщений: 2053
метафункции
Добавлено: 20 окт 10 23:02
К обсуждению предлагается задача разработки механизма метафункций для некоторого гипотетического функционально-ориентированного языка программирования.
Пусть метафункция это функция, которая в качестве входного параметра получает функцию, в качестве результата возвращает трансформацию входной функции. Примеры: интеграл и производная. Для реализации такого дела нужен продвинутый и удобный reflection.
[Ответ][Цитата]
Андрей
Сообщений: 3944
На: метафункции
Добавлено: 21 окт 10 1:24
Уже обсуждалось в теме Метаалгоритмы, автор - shuklin...
[Ответ][Цитата]
Vestnik
Сообщений: 82
На: метафункции
Добавлено: 21 окт 10 2:16
А для чего это?
[Ответ][Цитата]
daner
Сообщений: 4633
На: метафункции
Добавлено: 21 окт 10 2:25
Цитата:
Автор: shuklin
Для реализации такого дела нужен продвинутый и удобный reflection.

Зачем???????


int f1(int x){....}
int f2(int x){....}
.....
int fn(int x){....}

double g1(double x, double y){....}
double g2(double x, double y){....}
.....
double gn(double x, double y){....}

typedef int(*Int_X)(int);
typedef double(*Double_XY)(double,double);

Double_XY MetaF(Int_X input){
.....
}


или так...


class Function{ .... };
class F1:public Function{....};
class F2:public Function{....};
class MetaF:public Function{
......
Function f(const Function& input){
....
}
};


я уже молчу про ФП, там это вообще в порядке вещей.

(lambda f,x: f(x,y))((lambda x,y: x+y),10)(3)
[Ответ][Цитата]
daner
Сообщений: 4633
На: метафункции
Добавлено: 21 окт 10 2:28
Цитата:
Автор: Vestnik

А для чего это?


А как без этого?????
любое обучение/адаптация, по сути -- функция изменяющая функцию.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: метафункции
Добавлено: 21 окт 10 14:34
Цитата:
Автор: Андрей

Уже обсуждалось в теме Метаалгоритмы, автор - shuklin...


хотелось бы рассмотреть с разных сторон реализацию reflection требуемую для этого дела
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: метафункции
Добавлено: 21 окт 10 14:36
Цитата:
Автор: daner

Зачем???????

"А как без этого????? "
В качестве примера рассмотрим метафункцию возвращающую в результате производную от функции-параметра. Нужно будет выполнить символьное дифференцирование. Ну и как без этого ?????
[Ответ][Цитата]
covax
Сообщений: 1609
На: метафункции
Добавлено: 21 окт 10 17:30
Цитата:
Автор: shuklin
В качестве примера рассмотрим метафункцию возвращающую в результате производную от функции-параметра. Нужно будет выполнить символьное дифференцирование.

Одному формальному представлению функции (символу) хотите однозначно противопоставить другое формальное представление функции (символ). Это противопоставление (отношение) станет производной/интегралом или еще чем-то. Множество отношений будете называть метафункциями. Станет ли вам от этого легче? Куда дальше?
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: метафункции
Добавлено: 21 окт 10 18:36
я практик, я так сложно не понимаю ))) мне подавай всякие API, reflection, emit, ... )))
[Ответ][Цитата]
daner
Сообщений: 4633
На: метафункции
Добавлено: 21 окт 10 19:52
Цитата:
Автор: shuklin


"А как без этого????? "
В качестве примера рассмотрим метафункцию возвращающую в результате производную от функции-параметра. Нужно будет выполнить символьное дифференцирование. Ну и как без этого ?????


не обязательно. Это если приспичило в конце формулу производной получить.
А если потом надо только значения получать, то достаточно составить функцию которая получает дискретезированную величину производной в точке. И это кстати чаще нужно, чем сама функция.


class Function_F_F:public Function{...public: virtual double f(double x){....}...};
class F1:public Function_F_F{....};
class D_F_F:public Function_F_F{
private:
Function_F_F* fun;
public:
D_F_F(Function_F_F* fun):fun(fun){}
virtual double f(double x){
return fun(x-Eps)-fun(x+Eps);
}
............
};
class MF:public Function{
public:
Function_F_F* f(Function_F_F* fun){
return new D_F_F(fun);
}
};


Здесь функция D_F_F(x) эквивалентна (с ошибкой конечно) функции F1'(x).
[Ответ][Цитата]
covax
Сообщений: 1609
На: метафункции
Добавлено: 21 окт 10 19:54
Цитата:
Автор: shuklin
я практик, я так сложно не понимаю ))) мне подавай всякие API, reflection, emit, ... )))


а я программист и хочу сказать, что формализация формализма вам не поможет.

дописано:
Метаданные - это статический формат формализованного потока данных. Метафункции предполагают динамический формат формализованного потока. Выразить словами можно, но вот реализовать .....
Формат - это алгебра отношений. Алгебра не может быть динамической по определению.
Это и не нужно. Хотя интересно об этом подумать.

дописано:
подумал. спасибо за идею Пойду писать фантастику о путешествиях во времени.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: метафункции
Добавлено: 22 окт 10 2:00

(5) -- голая константа
(целое 5) -- типизированная
((имя строка Иванов) (возраст число 25)) -- запись или таблица на одну строку
(человек (Иванов 25)) -- нужно дешифровать 'человек потом подставить туда остаток
(толпа -- аналогично, уже настоящая таблица
(Иванов 25)
(Петров 26)
(Сидоров 27)
(паспорт 8854 456464) -- ссылка предусмотренного формата
(escape комментарий эта строка пропускается если не нашелся обработчик)
)
[Ответ][Цитата]
covax
Сообщений: 1609
На: метафункции
Добавлено: 22 окт 10 8:26
Цитата:
Автор: NO.
толпа -- аналогично, уже настоящая таблица


Это вы метаданные нам демонстрируете, а товарищу нужны метаФУНКЦИИ.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: метафункции
Добавлено: 22 окт 10 8:33
Тут можно рассмотреть одну функцию Имя->Возраст, остальные нужно допонимать. Даже 5 можно понимать как функцию
int 5(void) {return 5;}
[Ответ][Цитата]
covax
Сообщений: 1609
На: метафункции
Добавлено: 22 окт 10 9:36
Цитата:
Автор: NO.
Тут можно рассмотреть одну функцию Имя->Возраст, остальные нужно допонимать.

"Имя->Возраст" - это статическое отношение (оператор над символами), которое сложно назвать 'мета'функционалом или динамическим отношением. Подобный оператор можно применить и к функциям, но статическая сущность его не изменится.

Описать пространство динамических отношений можно, как множество статических отношений. Яркий пример - таблица первых производных. Она представляет множество статических отношений между функциями. "Отношение" - это взятие производной (как оператор). А "статическое" - потому, что каждой конкретной функции, противопоставлена только одна производная функция. Вот, если бы не только одна, а в зависимости от какого-то дополнительного параметра, тогда бы шла речь о динамике отношений или метафункционале. Но такое сложно даже представить.
[Ответ][Цитата]
 Стр.1 (5): [1]  2  3  4  5След. > >>