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: