Автор Тема: Higher-order function  (Прочитано 18426 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Higher-order function
« Ответ #30 : Ноябрь 15, 2012, 08:15:31 am »
Даже поясню:
Функция первого класса - это компьютерный термин, и определяет три действия:
1. Присвоить переменной
2. Принять аргументом
3. Вернуть

Если убрать первое действие, то получится математическое понятие "Функция высшего порядка"  ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Higher-order function
« Ответ #31 : Ноябрь 15, 2012, 08:19:41 am »
Все очень просто, valexey:
Цитировать
The distinction between the two is subtle: "higher-order" describes a mathematical concept of functions that operate on other functions, while "first-class" is a computer science term that describes programming language entities that have no restriction on their use (thus first-class functions can appear anywhere in the program that other first-class entities like numbers can, including as arguments to other functions and as their return values).
http://en.wikipedia.org/wiki/Functional_programming#First-class_and_higher-order_functions
 ;)

Мы сейчас пойдем уже по второму кругу :-)
Еще раз процитирую оттуда же:
Цитировать
Higher-order functions enable partial application or currying, a technique in which a function is applied to its arguments one at a time, with each application returning a new function that accepts the next argument. This allows one to succinctly express, for example, the successor function as the addition operator partially applied to the natural number one.

А между прочим, пока мы ходим кругами, никто не задался вопросом - что такое функция, и чем от нее отличается указатель на оную функцию :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Higher-order function
« Ответ #32 : Ноябрь 15, 2012, 08:36:20 am »
Если в языке возможен карринг, то возможен исключительно благодаря этим самым hof, но отсутствие карринга не является признаком отсутствия hof.

А про функцию и указатель: передача функции по ссылке так же законна, как и по значению.

hof - это элемент функционального языка, а не язык целиком, и не надо переносить с ФЯ на hof всё его содержание.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Higher-order function
« Ответ #33 : Ноябрь 15, 2012, 08:40:03 am »
До-о! Мелкософт конечно знатоки функциональщины!
Вообще-то да. Ведь основные работы по тому же хаскелю ведутся в Microsoft Research, да и F# тоже достаточно развит в плане ФП...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Higher-order function
« Ответ #34 : Ноябрь 15, 2012, 08:46:44 am »
Цитата: valexey
Higher-order functions enable partial application or currying, a technique in which a function is applied to its arguments one at a time, with each application returning a new function that accepts the next argument. This allows one to succinctly express, for example, the successor function as the addition operator partially applied to the natural number one.

Что в данном месте переводится "разрешают". Не вижу ничего противоречащего моим словам.
Вот если бы там было написано: "ФВП определяются наличием currying'а"...

ps И что такое функция в программировании?  :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Higher-order function
« Ответ #35 : Ноябрь 15, 2012, 08:50:15 am »
Если в языке возможен карринг, то возможен исключительно благодаря этим самым hof, но отсутствие карринга не является признаком отсутствия hof.

А про функцию и указатель: передача функции по ссылке так же законна, как и по значению.

hof - это элемент функционального языка, а не язык целиком, и не надо переносить с ФЯ на hof всё его содержание.
Везде имелось ввиду именно передача по значению (first class values).
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Higher-order function
« Ответ #36 : Ноябрь 15, 2012, 09:31:57 am »
Отображение на  яп некоторого вспомогательного алгоритма,  иловб, более корректный ьермин - подпрограмма

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Higher-order function
« Ответ #37 : Ноябрь 15, 2012, 09:49:07 am »
DIzer, не понял к чему вы это. Поясните плиз.

DIzer

  • Гость
Re: Higher-order function
« Ответ #38 : Ноябрь 15, 2012, 09:56:50 am »
Вы спросили- что такое функция в прогоаммировании - я ответил

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Higher-order function
« Ответ #39 : Ноябрь 15, 2012, 10:11:04 am »
А я тут гадаю...  ;D
Ну вопрос вообще к valexey был.

Цитата: valexey
А между прочим, пока мы ходим кругами, никто не задался вопросом - что такое функция, и чем от нее отличается указатель на оную функцию :-)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Higher-order function
« Ответ #40 : Ноябрь 15, 2012, 10:17:51 am »
Вы спросили- что такое функция в прогоаммировании - я ответил
Это никак не отвечает на поставленный мною вопрос :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Higher-order function
« Ответ #41 : Ноябрь 15, 2012, 10:41:31 am »
Я отвечал не на ваш  вопрос,  Алексей. а на Иловб

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Higher-order function
« Ответ #42 : Ноябрь 15, 2012, 10:42:59 am »
 ;D ;D ;D
Последние 6 постов доставляют.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Higher-order function
« Ответ #43 : Ноябрь 15, 2012, 10:44:38 am »
;D ;D ;D
Последние 6 постов доставляют.
Кстати, да. Напоминают игру "сломанный телефон".
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Higher-order function
« Ответ #44 : Ноябрь 15, 2012, 10:49:24 am »
да нет - просто тяжко отвечать развернуто через телефон в движущемя междугороднем автобусе