Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Какой должен быть язык   Найти похожие ветки 

 
Alkid ©   (2007-03-16 17:12) [40]

Reflection - это возможность получать информацию о структуре типов в run-time.
Т.е. списки методов, пропертей, полей и т.п. классов.

First-class functions - это функции, которыми можно оперировать, как другими значениями, т.е. передавать как параметры в другие функции и возвращать как результат выполнения. В принципе, наличие указателей на функции в паскале делает это возможным, но не без извратов.


 
REA   (2007-03-16 17:15) [41]

И как адресоваться к Num например? (а не к N)
Т.е. можно присвоить Facts.Kind := Num; но зачем?


 
jack128 ©   (2007-03-16 17:17) [42]

Alkid ©   (16.03.07 17:12) [40]
В принципе, наличие указателей на функции в паскале делает это возможным, но не без извратов.


В чем изврат то?


 
REA   (2007-03-16 17:17) [43]

>Reflection - это возможность получать информацию о структуре типов в run-time.

Это круче реализовано, чем RTTI?

>В принципе, наличие указателей на функции в паскале делает это возможным, но не без извратов.

Да вроде не было с этим сложностей. В C# ввели какие то делегаты... до конца не понял где тут удобство.


 
clickmaker ©   (2007-03-16 17:25) [44]


> В C# ввели какие то делегаты

как не назови - суть одна. Указатель на точку входа в некую функцию
В VB так прямо и пишут AddHandler ... AddressOf func


 
Alkid ©   (2007-03-16 17:28) [45]


> В чем изврат то?

Ну хорошо, вот напиши мне на паскале функцию, которая принимает в качестве параметров две функции, вида
function (i : double) : double;

И возвращает функцию такого же вида, которая вычисляет сумму этих двух фукнций?

Я на лету не могу сообразить, как это сделать на паскале.


 
Alkid ©   (2007-03-16 17:29) [46]


> Это круче реализовано, чем RTTI?

Да. RTTI в Delphi работает только по published типам, да и там его возможности послабее. Но цели преследуются одни и те же.

> Да вроде не было с этим сложностей. В C# ввели какие то
> делегаты... до конца не понял где тут удобство.

Делегаты есть и в Дельфи.
Сложности - я тут jack128 задачку задал.


 
clickmaker ©   (2007-03-16 17:30) [47]


> И возвращает функцию такого же вида, которая вычисляет сумму
> этих двух фукнций?

type TFunc=function(...);
TFunc может быть и возращаемым значением, если уж очень надо


 
Alkid ©   (2007-03-16 17:30) [48]


> как не назови - суть одна. Указатель на точку входа в некую
> функцию

Не совсем. Если речь идёт статической (читай - глобальной) функции, то да.
А если о instance method, то надо хранить ссылку на экземпляр и на точку входу.


 
Alkid ©   (2007-03-16 17:31) [49]


> type TFunc=function(...);
> TFunc может быть и возращаемым значением, если уж очень
> надо

Ну и что? Ты мне код приведи, плз, а тут только описание типа.


 
clickmaker ©   (2007-03-16 17:33) [50]


> Ты мне код приведи, плз

задача до конца не понятна и кажется слишком уж притянутой за уши...
в каком случае такой изврат нужен?


 
jack128 ©   (2007-03-16 18:05) [51]

Alkid ©   (16.03.07 17:28) [45]
И возвращает функцию такого же вида, которая вычисляет сумму этих двух фукнций?


А то, что должна возвращаться именно функция - это так принципиально?  Чем объект/интефейс - плох?

Если я правельно понял задачу, то так например:

TFunc = function (D: Double): Double;
IFuncSummator = interface
 function GetSum(D1, D2: Double): Double;
end;
TFuncSummator = class(TInterfacedObject, IFuncSummator)
private
 F1, F2: TFunc;
public
 constructor Create(Arg1, Arg2: TFunc);
 function GetSum(D1, D2: Double): Double;
end;

function GetSummator(F1, F2: TFunc): IFuncSummator;
begin
 Result := TFuncSummator.Create(F1, F2);
end;

использование:

var
 Summator: IFuncSummator;
begin
 Summator := GetSummator(@Sin, @Cos);
 ShowMessage(FloatToStr(Summator.GetSum(0.5, 0.9)));
end;


 
Игорь Шевченко ©   (2007-03-16 18:07) [52]

Alkid ©   (16.03.07 17:28) [45]

Ну не является паскаль языком функционального программирования, не Эрланг он нифига. Что же теперь, застрелиться ?



Страницы: 1 2 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.041 c
2-1174196264
vegarulez
2007-03-18 08:37
2007.04.08
Вопрос по поводу селекта к БД.


15-1173765754
Layner
2007-03-13 09:02
2007.04.08
ADSL модем + Хаб + 2 ПК в интеренет, возможно?


8-1153895658
Delphi6
2006-07-26 10:34
2007.04.08
Delphi: Библиотека или dll для работы с фотографиями


8-1154522615
lyberzon
2006-08-02 16:43
2007.04.08
Функция извлечения цветов из BMP в массив


8-1154592688
Proper
2006-08-03 12:11
2007.04.08
Рисовать на рабочем столе.