Re[9]: Is C# becoming a functional language?
От: Mirrorer  
Дата: 01.02.07 08:11
Оценка: +1
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

VD>>Прости, ты в курсе, что в С и Паскале есть поддержка ФВП?


LCR>Это указатели на функции что-ли?


Угу. Кстати если мне не изменяет мой склероз в каком-то Паскале (TP? BP ? )были типизированные указатели на функции.(Или это уже в делфи появилось... )
В общем Sort() с передачей метода принимающего 2 значения типа обжект и возвращающего -1,0,1 в зависимотси от результата сравнения имел место быть.

Согласно википедии этого достаточно

In mathematics and computer science, higher-order functions or functionals are functions which do at least one of the following:

* take one or more functions as an input
* output a function

... << RSDN@Home 1.2.0 Blanke C — South china sea >>
Re[7]: Is C# becoming a functional language?
От: Трурль  
Дата: 01.02.07 08:25
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>ФП невозможен без какой-либо формы ФВП.

ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть функциональными.
Re[7]: Is C# becoming a functional language?
От: Klapaucius  
Дата: 01.02.07 08:41
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Лямбды — это действительно просто сахар, хотя такой же необходимый для

C>ФП, как и циклы for/while для ИП, которые являются сахаром над if/goto.

Вообщето, это именованная функция сахар для лямбды, а не наоборот. По крайней мере в Haskell именно так, если мне память не изменяет. Но это не принципиальная претензия — с остальным я, в принципе, согласен.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: Is C# becoming a functional language?
От: VladGalkin Украина  
Дата: 01.02.07 08:43
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Я бы не сказал что он поддерживает функциональный стиль. Он поддерживает функциональные фичи.


+1. Собственно, несмотря на фразу самого автора про “language that supports a functional style of programming”,
из всех дальнейших оговорок про "There are currently no plans" и "are not entirely like" это неявно и вытекает.

GZ>Хотя бы корневую рекурсию (используемый стек то ограничен). А этого здесь нет.


Может "хвостовую" (tail)? Или я чего-то не знаю? Поддержка хвостовой рекурсии то есть (см. например здесь
Автор: VladGalkin
Дата: 07.12.06
, или ниже в текущей теме) но реализация, как всегда, хромает...
ДЭ!
Re[8]: Is C# becoming a functional language?
От: Klapaucius  
Дата: 01.02.07 08:46
Оценка: +1
Здравствуйте, Klapaucius, Вы писали:

K>Вообщето, это именованная функция сахар для лямбды, а не наоборот. По крайней мере в Haskell именно так, если мне память не изменяет. Но это не принципиальная претензия — с остальным я, в принципе, согласен.


Хотя нет, не совсем. Главное это не ФВП, а функции, являющиеся FCO — тут есть нюанс — это не одно и то же.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[3]: Is C# becoming a functional language?
От: GlebZ Россия  
Дата: 01.02.07 08:57
Оценка:
Здравствуйте, VladGalkin, Вы писали:

VG>Может "хвостовую" (tail)? Или я чего-то не знаю? Поддержка хвостовой рекурсии то есть (см. например здесь
Автор: VladGalkin
Дата: 07.12.06
, или ниже в текущей теме) но реализация, как всегда, хромает...

Не путай язык C# и MSIL.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[9]: Is C# becoming a functional language?
От: Mirrorer  
Дата: 01.02.07 09:10
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Хотя нет, не совсем. Главное это не ФВП, а функции, являющиеся FCO — тут есть нюанс — это не одно и то же.


А можно тыксзть озвучить разницу понятным языком? А то я что-то до сих пор разницы не прочувствовал

Я человек военный, мне нужно повторять два раза и медленно (с) Гоблин, Сорванные башни
... << RSDN@Home 1.2.0 Metallica — Tuesday's Gone >>
Re[8]: Is C# becoming a functional language?
От: gandalfgrey  
Дата: 01.02.07 09:30
Оценка: +1
Здравствуйте, Трурль, Вы писали:

C>>ФП невозможен без какой-либо формы ФВП.

Т>ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть функциональными.
Извиниття ! Куда это high order функции из ерланга проелись ?
Вот живой пример :

Fun3=fun(Fun1,Fun2)-> Fun1() + Fun2() end.

Это кусочек парсера скриптового языка. Делает из 2-х подвыражений лямбду, которая их складывает.
На входе — функции.
На выходе — тоже функция. Стало быть, high order functions из Erlang никто не утащил, воспользовавшись ночным мраком и плохой погодой...
Re[8]: Is C# becoming a functional language?
От: Cyberax Марс  
Дата: 01.02.07 10:05
Оценка:
Трурль wrote:
> C>*ФП невозможен без какой-либо формы ФВП*.
> ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть
> функциональными.
В Lisp'е нет ФВП??? А как же code is data is code и замыкания?

Про Sisal ничего не знаю, в Erlang'е ФВП есть (см. функции map или foreach).
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[8]: Is C# becoming a functional language?
От: Gajdalager Украина  
Дата: 01.02.07 10:10
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, Cyberax, Вы писали:


C>>ФП невозможен без какой-либо формы ФВП.

Т>ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть функциональными.
Лиспа не знаю, но в Scheme точно есть
Re[12]: Is C# becoming a functional language?
От: Gajdalager Украина  
Дата: 01.02.07 10:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Cyberax, Вы писали:


C>>Ну да, С как и Perl может быть WOP-языком (Whatever Oriented Programming).


VD>Не может. Мордой лица не вышел.


Кто не вышел — С или Перл??
Re[10]: Is C# becoming a functional language?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 01.02.07 10:31
Оценка: +1
Mirrorer,

LCR>>Это указатели на функции что-ли?


M>Угу. Кстати если мне не изменяет мой склероз в каком-то Паскале (TP? BP ? )были типизированные указатели на функции.(Или это уже в делфи появилось... )

M>В общем Sort() с передачей метода принимающего 2 значения типа обжект и возвращающего -1,0,1 в зависимотси от результата сравнения имел место быть.
Согласен, имел.

M>Согласно википедии этого достаточно

M>

In mathematics and computer science, higher-order functions or functionals are functions which do at least one of the following:
M> * take one or more functions as an input
M> * output a function


Однако не слишком строгое определение, заметь. То есть это определение можно трактовать очень вольно. Как то что этим свойством обладают все функции (в математическом смысле), так и то, что этим свойством могут обладать некоторые функции.

Две большие разницы. Например, верни мне указатель на
1. функцию Medved(_, 22, _) получающуюся после частичного применения числа 22 к среднему аргументу функции Medved(x, y, z).
2. функцию f, которая является частной производной функции Medved(x, y, z) по второму аргументу y.

Короче, у нас путаница возникла из-за слияния двух альтернатив:

1. Если мы поставим тождество между указателями на функции и просто функцииями. Отсюда следует неравенство наличия ФВП и наличия функций как первоклассных объектов, всё так, как говорит Влад в этом сообщении
Автор: VladD2
Дата: 01.02.07
.

2. Если же функции и указатели на функции разделять, то указанное выше вики-определение подразумевает наличие функий как первоклассных объектов. Следовательно наличие ФВП равносильно наличию функций как первоклассных объектов.

Так что здесь флуктуации чисто терминологические: называть ли функцию, принимающую указатель на другую функцию, ФВП или нет.

Я предпочитаю второй вариант, но дискутировать на эту тему мне бы не хотелось бы по понятным причинам.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[9]: Is C# becoming a functional language?
От: Трурль  
Дата: 01.02.07 10:39
Оценка:
Здравствуйте, gandalfgrey, Вы писали:

Т>>ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть функциональными.

G>Извиниття ! Куда это high order функции из ерланга проелись ?
Кажется, у некоторых проблемы с восприятием грамматической категории времени глагола.
Естественным был бы вопрос: "откуда они взялись?".
Re[5]: Is C# becoming a functional language?
От: Yuri Khomic  
Дата: 01.02.07 10:40
Оценка: +1 :)
Hello, Cyberax!
You wrote on Wed, 31 Jan 2007 22:24:10 GMT:

>> Повторяю — функциональное программирование является

>> разновидностью процедурного, нравится вам это или нет.
C> Да даже близко не является. Процедурное программирование — это
C> подмножество императивного стиля.

C> Функциональное программирование — это совершенно другой стиль.

C> Ортональный ООП и противоположный императивному.

Думаю, вы не сможете договориться даже насчет определения функционального и процедурного программирования, не говоря уже о чем-то большем.
Posted via RSDN NNTP Server 2.0
Re[9]: Is C# becoming a functional language?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 01.02.07 10:44
Оценка:
gandalfgrey,

C>>>ФП невозможен без какой-либо формы ФВП.

Т>>ФВП нет в Sisal. Не было их в Лиспе и в Эрланге, что не мешало им быть функциональными.
G>Извиниття ! Куда это high order функции из ерланга проелись ?
G>На входе — функции.
G>На выходе — тоже функция. Стало быть, high order functions из Erlang никто не утащил, воспользовавшись ночным мраком и плохой погодой...

Всё совершенно верно, но лямбды в Эрланге появились не сразу. В OTP R5 и раньше они представлялись просто туплами. Кстати это и ответ на вопрос, почему gen_server:start_link принимают имя модуля, а не список функций-хэндлеров. Казалось бы самое непосредственное и напрашивающееся решение. Исторически так сложилось.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[11]: Is C# becoming a functional language?
От: Mirrorer  
Дата: 01.02.07 10:53
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>То есть это определение можно трактовать очень вольно. Как то что этим свойством обладают все функции (в математическом смысле), так и то, что этим свойством могут обладать некоторые функции.

+1

LCR>Например, верни мне указатель на

LCR>1. функцию Medved(_, 22, _) получающуюся после частичного применения числа 22 к среднему аргументу функции Medved(x, y, z).
Мммммм.. Тут какой интресный вопрос возникает.. Считать ли partial application необходимым условием для ФВП?

LCR>2. функцию f, которая является частной производной функции Medved(x, y, z) по второму аргументу y.

Хотел бы я увидеть частную производную от Medved("preved","mishko","kosalapiy")
А если серьезно, то это вопрос наличия опять же partial application и\или лямбд. Хотя имея лямбды можно организовать partial application.. Получается что наличие лямбд достаточное условие для поддержки языком ФВП ?

LCR>Так что здесь флуктуации чисто терминологические: называть ли функцию, принимающую указатель на другую функцию, ФВП или нет.

+1 Но обычно в таком случае ломается больше всего копий. Как-то Объектный язык vs Объектно-ориентированный Ну или в новой интерпретации Функциональный или Функционально-ориентированный.

LCR> но дискутировать на эту тему мне бы не хотелось бы по понятным причинам.

+1. На вкус и цвет товарищи разные.
... << RSDN@Home 1.2.0 Pink Floyd — Don't Leave Me Now >>
Re[10]: Is C# becoming a functional language?
От: gandalfgrey  
Дата: 01.02.07 11:12
Оценка:
Здравствуйте, Трурль, Вы писали:

Т> Кажется, у некоторых проблемы с восприятием грамматической категории времени глагола.

Т>Естественным был бы вопрос: "откуда они взялись?".
Я не понимаю, что такое время, и признаю это открыто. Для меня это совершенно абстрактное понятие, никак не соотносящееся ни с реалиями жизни, ни с физическими феноменами...
Впрочем, я подразумевал именно массированную пропажу ФВП из различных языков и реализаций, поскольку очевидно, что у большинства из них в зародышево-личиночной стадии развития их не было. Ни у ерланга, ни у МЛя... Не знаю, как было дело с лиспом.
Re[5]: Is C# becoming a functional language?
От: LaPerouse  
Дата: 01.02.07 11:15
Оценка: -1 :)))
Здравствуйте, Cyberax, Вы писали:

C>LaPerouse wrote:

>> Повторяю — функциональное программирование является разновидностью
>> процедурного, нравится вам это или нет.
C>Да даже близко не является. Процедурное программирование — это
C>подмножество императивного стиля.

C>Функциональное программирование — это совершенно другой стиль.

C>Ортональный ООП и противоположный императивному.


Видите ли, те языки, о которых вы говорите (C++, Pascal) в представлении многих являются классическими процедурными языками, что нет ничего недопустимого в усилении этого термина, которое более предпочтительно по сравнению с введением нового термина – “функциональный язык”. Исходя из того, что сказано мной выше, едва ли справедливо выделять из процедурных группу функциональных языков, тут, скорее, нужно говорить о “функциональном подходе” и о языках, наиболее эффективно поддерживающих этот подход.

Все-таки основным критерием функционального подхода является то, о чем я говорил выше – отношение к хранению состояния. Вот он, постамент, на котором зиждется вся теория и практика функционального программирования, тот самый “пятый элемент”, придающий особый колорит этому стилю. Стоит только разрешить изменение переменных в любом “функциональном языке” и внешние ссылки на эти переменные (которое не нужно даже специальным образом вводить), и этот язык неуловимо для глаз превратится в стандартный процедурный язык. Все остальное – синтаксические конструкции, помогающие объявлять вложенные конструкции функций, встроенные в сам язык возможности для обработки списков и т п — все это для дураков, чтобы дать им почувствовать всю “революционность” и крутизну “новейшего” подхода. Да! Я утверждаю, что за роскошной вывеской прячется тухлятина, которой уже как минимум 50 лет. И готов это доказать любому, пусть и придется пожертвовать частью личного времени на восполнение пробелов в чужом образовании.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[12]: Is C# becoming a functional language?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 01.02.07 12:07
Оценка: +1
Mirrorer,

LCR>>Например, верни мне указатель на

LCR>>1. функцию Medved(_, 22, _) получающуюся после частичного применения числа 22 к среднему аргументу функции Medved(x, y, z).
M>Мммммм.. Тут какой интресный вопрос возникает.. Считать ли partial application необходимым условием для ФВП?

M>А если серьезно, то это вопрос наличия опять же partial application и\или лямбд. Хотя имея лямбды можно организовать partial application.. Получается что наличие лямбд достаточное условие для поддержки языком ФВП ?


Ну нужно ещё уметь передавать лямбды в качестве параметров и возвращать их. (Это равносильно требованию иметь лямбды как первоклассные значения).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[13]: Is C# becoming a functional language?
От: Mirrorer  
Дата: 01.02.07 12:14
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

M>> Получается что наличие лямбд достаточное условие для поддержки языком ФВП ?


LCR>Ну нужно ещё уметь передавать лямбды в качестве параметров и возвращать их. (Это равносильно требованию иметь лямбды как первоклассные значения).


После некоторого размышления +1(Почему-то не смог сразу представить как это — иметь лямбды и не иметь возможности их возвращать). В следующий раз буду более подробно уточнять, что я имею ввиду.
... << RSDN@Home 1.2.0 Queen — I Want To Break Free >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.