metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-11-30 04:31 pm

Какого функционального программирования нам не хватает?

Как минимум, такого:
Пишем функцию с двумя(или одним) параметрами. Первый параметр - объект, второй - его метод. Если параметр один - то это кортеж содеращий в себе объект и метод.
Вызываем с произвольным объектом и его методом. Функция выполняет метод, и возвращает его результат в виде строки, а если валится исключение, то возвращает строку, описывающую исключение.
И все это для того, чтобы было проще писать логи в логи всякие характеристики объектов, в том числе и тогда, когда объект==null :)

Можно было бы еще возвращать из функции что-то вроде Either, где Left - это результат метода, а Right - описание исключения.

Но нам, энтерпрайзным быдлокодерам функциональное программирование не положено, поэтому "пишите на чем есть, мойша иванович, и не выпендривайтесь".

[identity profile] molnij.livejournal.com 2008-12-02 04:16 am (UTC)(link)
м... если не трудно, еще одну итерацию объяснения можешь провести?
есть какой-то объект MyObject. у него метод function multiply(a,b: integer): integer; который возвращает результат умножения своих аргументов.
Мы отдаем их в суперфункцию: SuperFunc(MyObject, myltiply), которая должна в ответ вернуть строку с результатом.
Я по прежнему не могу понять, откуда берет SuperFunc значения для a и b...

[identity profile] metaclass.livejournal.com 2008-12-02 09:50 am (UTC)(link)
Не, строку с результатом оно вернет, если мы ему передали объект и метод типа ToString() у которого ноль входных параметров и строка в качестве результата.
А если передать Multiply, то функция вернет функцию у которой будет два входных параметра и один выходной.

[identity profile] molnij.livejournal.com 2008-12-02 12:56 pm (UTC)(link)
ага, теперь дошло :)
спасибо )