Evening, Andrei. Andrei Sosnin <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED] GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D