[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: kylix 2



Evening, Andrei. 

Andrei Sosnin <demonsly@hot.ee> 19:04 9/1/2003 wrote:

 AS> Dmitry Astapov wrote:

>> DA>> DA>> И как на C правильно реализуется map и fold? А так, чтобы
>> было type-safe? А
>> DA>> рекурсивные функции? А с tail-recursive оптимизацией?
>> DD> что есть map, fold и tail-recursive оптимизация?
>> Функции такого вида (я, да простят меня, решил демонстрировать на
>> примерах...):
>> map :: (a -> b) -> [a] -> [b]
>> (дали функцию и список, получили список, к каждому эл-ту которого применена
>> эта ф-я)
>>
 AS> В С++ это делается так:

 AS> foreach(list_iterator.first, list_iterator.last, function_obj);

 AS> Где:
 AS> 	list_iterator.first, list_iterator.last - итераторы,
 AS> 	указывающие на начало и конец списка (контейнера);
 AS> 	function_obj - объект-функция.

Только отгремели баталии в su.softw :)

Какой тип у foreach и function_obj? Подсказка: "void *" - это несерьезно.

Каким образом происходит проверка того, что function_obj принимает аргумент
именно того типа, который содержится в списке?

Можно ли сделать:
foreach(list_iterator.first, list_iterator.last,
   foreach(other_list_iterator.first, other_list_iterator.last, function_obj));
(это синтаксически неверно, но идея должна быть понятна. Если для этого
нужно более 3 строк кода, то хорошо ли это?)


-- 
Dmitry Astapov //ADEpt                               E-mail: adept@umc.com.ua
GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498  2B08 7867 4860 F5D7 639D



Reply to: