В лиспе оператор это какая-либо специальная синтаксическая конструкция, используемая, как правило, для управления потоком вычислений, которая может даже не иметь возвращаемого значения(напр. операторы GO(т.е. goto) или return-from)
То, что в некоторых языках операторами называют «+» и "-" это проблемы негров.
Я к такой же версии склоняюсь. Просто смущает, что в книгах функцию называют функцией, а оператор - оператором.
Это зависит от языка. В Haskell, например, это различие связано только с синтаксисом применения функции к аргументу и оператора к операндам. В C, Pascal, Ada, Java и прочих подобных операторы соответствуют математическим операциям над встроенными типами данных и служат для эффективной реализации этих операций.
То, что в английском называется «operator», применительно к программированию, от функций отличается только, иногда, семантикой вычисления (например, в некоторых «энергичных» языках оно иногда «короткого цикла»), и, в некоторых недоязыках, синтаксисом.
Оператор в математике — это отображение из множества функций в множество функций.
как насчет оператора из линейного пространства непрерывных на отрезке [0,1] вещественнозначных функций, возвращающего определенный интеграл по этому отрезку от функции?
> как насчет оператора из линейного пространства непрерывных на отрезке [0,1] вещественнозначных функций, возвращающего определенный интеграл по этому отрезку от функции?
Это называется «функционал» — числовая функция на функциональном пространстве.
В математике строго определено лишь понятие функции, которое полностью синонимично понятию отображения (так принято в большинстве источников, но, наверное, можно найти и исключения). Операторами, как правило, называют некоторые функции, аргументами которых являются другии функции. Общепринятого определения оператора нет (и не нужно). При желаниии можно посмотреть википедию на эту тему: http://en.wikipedia.org/wiki/Operator
Меняется ли ленивость - вопрос к спецификации и реализации компилятора.
Меняется. Ленивость - это свойство операторов || и && для встроенных типов данных. Перегруженные же операторы - это просто функции со спец. синтаксисом, порядок же вычисления их аргументов такой же как и у остальных.
моя всегда хотеть убивать математиков за такой языка!
even though dynamorphism is a form of chronomorphism, because 'eta' can be folded into the anamorphism side of the chronomorphism, as you do with a normal hylomorphism
функция — это фигня которая получает информацию на входе и выдаёт информацию на выходе (например на входе число 3 — а на выходе три барана)
оператор — это фигня которая получает некий объект (или ссылку на этот объект) на входе, и в процессе работы над этим объектом делает некую операцию (на входе три барана — на выходе три барана с отпиленными горами).
Хорошо, давайте разбираться. Во-первых, вам следует быть осторожнее с записью X -> X. Обычно под этим понимают, что область определения отображения совпадает с Х. Так мы выкинем кучу полезных оперторов (например, в квантовой механике абсолютное большинство самосопряженных операторов, которые соответсвуют измерениям, определены лишь на плотном подмножестве). Во-вторых, исходя из вашего определения функции вещественного переменного с вещественными значениями будут зваться операторами. Я, признаться, не слышал чтобы sinx именовался оператором, а не функцией. Примеры операторов, которые приходят в глову: различные операторы дифференцирования и интегрирования, оператор Фурье (хотя тут, конечно, чаще говорят преобразование), оператор сдвига, Гамильтониан.
Тут вот еще что надо заметить. Оператором называют линейное отображение между двумя линейными подпространствями двух Банаховых пространств (чаще даже Гильбертовых). Хоть в это определение и можно включить большиснтво вышеупомянутых примеров, я бы все же не стал утверждать, что слово оператор имеет только этот смысл.