2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:25 
arseniiv в сообщении #1017340 писал(а):
Возвращает-то возвращает, но при этом ещё и меняет. А sum ничего не меняет, и именно потому она чистая.


Хорошо. Если данная функция будет манипулировать муттабельным объектом не изменяя его, она будет чистой, правильно я понял? Кстати, с точки зрения семантики ООП, сама функция там ничего не меняет, она только отсылает сообщение объекту.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:26 
Dmitriy40 в сообщении #1017347 писал(а):
Как может быть чистой функция, вызывающая грязные методы и соответственно зависящая от побочных эффектов?!


Ну в общем то в этом и недопонимание возникло некоторое - формально функция чиста, но из-за того что её "окунули в грязь" её _применение_ уже не чисто. Сам вообще конктекст. Как бы и не сама функция, но то в чём она участвует не чисто.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:34 
aa_dav в сообщении #1017349 писал(а):
формально функция чиста
Нет, вот с этим и не согласен - она нечиста потому что вызывает грязные методы (а это задано явно прямо в определении фунции). Точка. Куда там её окунули или как использовали - дело второе.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:35 
Аватара пользователя
nondeterminism в сообщении #1017345 писал(а):
В нескольких местах. В частности -- в фундаментальном -- Барендрегт" лямбда исчисление - его синтаксис и семантика"
То, что описано в Барендрегте - это не единственная семантика, и семантика с возможностью параллельного выполнения непересекающихся редексов ей эквивалентна.

nondeterminism в сообщении #1017345 писал(а):
Совершенно непонятно, как из разных стратегий вычислений следует параллелизм. То что непересекающиеся редексы можно редуцировать параллельно не значит, что ФП является основой для параллелизма. Любые непересекающиеся выражения и их наборы можно выполнять параллельно. это не из той оперы вообще.
Нет, вот в языке с мутабельностью в выражении f(z) + g(z) вообще говоря непересекающиеся выражения f(z) и g(z) нельзя параллельно выполнять, ибо они могут менять z. В некоторых языках это "исправляется" тем, что данное выражение дает undefined behaviour, не знаю, что там у Вас в JS.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:38 
Xaositect в сообщении #1017336 писал(а):
разные стратегии редукции приводят к одному и тому же результату


кстати, разные стратегии редукции не приводят к тому же результату
Код:
((lambda(x) another_thing)(infinite loop))

Данное выражение не выполнится при аппликативном порядке.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:43 
Аватара пользователя
У меня по дефолту в голове типизированное лямбда-исчисление, там strong normalization и все в порядке.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:44 
Dmitriy40 в сообщении #1017359 писал(а):
Нет, вот с этим и не согласен - она нечиста потому что вызывает грязные методы (а это задано явно прямо в определении фунции).
Ничего она не вызывает, она возвращает замыкание (и больше ничего не делает).

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:45 
Xaositect в сообщении #1017360 писал(а):
нельзя параллельно выполнять, ибо они могут менять z


Опять же, совершенно не понятно. Внешние функции не могут изменить z в семантике ООП и акторов. Они могут ему послать сообщение, чтобы он изменил что-то внутри себя. Объект инкапсулирует свое состояние.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:47 
Аватара пользователя
nondeterminism в сообщении #1017371 писал(а):
Опять же, совершенно не понятно. Внешние функции не могут изменить z в семантике ООП и акторов. Они могут ему послать сообщение, чтобы он изменил что-то внутри себя. Объект инкапсулирует свое состояние.
Результат-то все-равно может зависеть от того, кто первым успел.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:47 
Вообще я удивляюсь, почему мы потакаем nondeterminism, обсуждая чистоту на примерах из JS, которые, в принципе, можно трактовать как захочется, потому что он очень сложен (стоит просто почитать, как работает new выражение). Почему мы не выбрали для этого язык, в котором вообще нет никаких функций, или все операции одинаково грязные?

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:54 
arseniiv в сообщении #1017374 писал(а):
на примерах из JS


Изначально, пример был не мой, я им просто воспользовался

arseniiv в сообщении #1017374 писал(а):
как работает new выражение


В нем нет ничего сложного, но оно не нужно в JS.
arseniiv в сообщении #1017374 писал(а):
нет никаких функций


А что есть такие?

-- 19.05.2015, 19:56 --

Xaositect в сообщении #1017373 писал(а):
Результат-то все-равно может зависеть от того, кто первым успел.


Только если актор позволит.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 18:58 
nondeterminism в сообщении #1017379 писал(а):
В нем нет ничего сложного
А вы почитайте спецификацию. (Или она вам тоже не нужна, и не станете?)

nondeterminism в сообщении #1017379 писал(а):
А что есть такие?
Brainfuck, например. Это уже не язык?

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:01 
arseniiv в сообщении #1017385 писал(а):
А вы почитайте спецификацию. (Или она вам тоже не нужна, и не станете?)

Я знаю, как оно работает. Я лезу в спеки только за тем чего не знаю.
arseniiv в сообщении #1017385 писал(а):
Brainfuck, например. Это уже не язык?


Насколько я помню, там есть goto, это тот же самый funcall, только еще бонусом идет возможность нелокального выхода. Разница невелика

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:04 
Аватара пользователя
nondeterminism в сообщении #1017388 писал(а):
Насколько я помню, там есть goto, это тот же самый funcall, только еще бонусом идет возможность нелокального выхода. Разница невелика
Там нет неограниченного goto, там только циклы.

 
 
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:09 
Xaositect в сообщении #1017392 писал(а):
Там нет неограниченного goto, там только циклы.


Странно. goto более фундаментален, чем циклы, циклы -- частный случай, а у них все наоборот. Значит это не примитивный ЯП, а язык с блекджеком:)

 
 
 [ Сообщений: 106 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group