Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.079 c
11-1153591610
papazoff
2006-07-22 22:06
2007.04.08
Скорбная новость. Умер автор статей и программ ECM


15-1173640857
Cyrax
2007-03-11 22:20
2007.04.08
Активные форумы по CASE-системам...


2-1174317857
Malik
2007-03-19 18:24
2007.04.08
Вопрос по StringGrid y


1-1171335655
Андрей Прокофьев
2007-02-13 06:00
2007.04.08
TMemo, TDBMemo


15-1173820327
Gamer
2007-03-14 00:12
2007.04.08
открыть занятый недокачанный файл jpg





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский