Re: kylix 2
Evening, Andrei.
Andrei Sosnin <demonsly@hot.ee> 02:11 11/1/2003 wrote:
>> AS> int function(int x, int (*what_to_do)(int pnt), int point, int
>> value);
>> AS> int function2(int x);
>> Вопросы:
>> 1)Что надо сделать, чтобы решение работало для произвольных функций a -> b,
>> а не только для функций int -> int? При этом, решение должно быть type
>> safe.
AS> В С это не предусмотрено. Зато предусмотрено в С++ (по крайней мере,
AS> косвенно).
Ну и где же пример? :)
AS> Так, что такое функция? - Я понимаю так: это некоторое выражение вида:
[skip]
AS> Но зачем может быть необходимо функции возвращать не собственное
AS> значение, а другую функцию? (Это противоречит моему пониманию функции,
Для реализации более общих решений в более общих терминах.
AS> которое со школьной скамьи всем известно, и этого парадокса не
AS> понимаю) Как математически это можно представить?
Все несколько сложнее... Ключевые слова - функционал, теория вычислений,
лямбда-исчисление, частичное применение, ...
>> Понимание того, как важна простота и читаемость кода приходит обычно в
>> процессе работы с legacy кодом на >100000 строк на С ....
AS> Да уж оно и так понятно. :-) Я не понимаю, как некоторые
AS> парадоксальные (противоречащие традиционному пониманию) особенности
AS> (как возвращение функции функцией) могут помочь с читаемостью и
AS> простотой кода? В первую очередь, с читаемостью? Конечно, я понимаю,
AS> что с привычкой это становится легче, но... Признаюсь честно, в данный
AS> момент я остального решительно не понимаю. :-)
Ну, для начала можно порекомендовать почитать что-то про closures и
continuations, например ... Тут уже упоминали книжку Фоккера - там, вроде,
было множество хороших примеров. Есть еще Structure and Interpretation of
Computer Programs (если я не ошибаюсь, первое издание доступно в эл. виде)
--
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: