5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
|
|
1 | |
Теория-практика: накопление суммы в "чисто" функциональных ЯП02.03.2017, 16:44. Показов 1324. Ответов 6
Метки нет (Все метки)
Согласно теории, в Haskell, как и в ему подобных ЯП, конструкция S = S + A[i] (где то так...) не может работать!
Т.Е. есть проблема как осуществить накопление суммы... Я думаю о следующем - создаётся список нулевой длины и ему раз за разом присваивается значение функции находящейся в "цикле", после его окончания получившийся список, точнее его элементы, суммируются и таким образом мы обходим "проблему суммирования"...
0
|
02.03.2017, 16:44 | |
Ответы с готовыми решениями:
6
λ-выражения (чисто теория) Накопление суммы Накопление суммы, произведения Теория и практика Теория и практика |
Модератор
|
||||||||||||||||
02.03.2017, 17:59 | 4 | |||||||||||||||
Суммировать массив без сакраментального "s=s+a[i]" можно в любом языке. Например, вот два варианта, как это может выглядеть в C/С++:
Но проще, конечно, вот так:
3
|
Заблокирован
|
|
04.03.2017, 11:58 | 5 |
Никак. Накопление невозможно уже потому, что невозможно состояние.
Можно имитировать это. То есть условно считать, что каждая последующая новая сумма является "тем же самым аккумулятором". Но "считать" так может только внешний наблюдатель, на уровне семантики ФП это абстрагировать невозможно Добавлено через 24 минуты Кстати, если интересует, какие еще ограничения имеются в ФП, помимо абстракции состояния и времени -- это конкурентрые вычисления. Они тоже не могут быть описаны в рамках семантики ФП. Например, пусть у нас есть выражение foo(bar). Если это выражение выполняется конкурентно, то очевидно, что нам нужны механизмы синхронизации, поскольку foo не может быть вычисленно до тех пор, пока не вычесленно bar. То есть, нам нужно что то-вроде того, что после запуска этого выражения, сначала ставится задача на вычисление bar, а пока оно вычисляется (и одновременно с этим вычисляется другой код) foo "ждет" результат этого вычисления. Однако, в семантике чистого ФП нет никаких определений для описания механизмов такой синхронизации(futures etc). Впрочем, если бы эти определения были, было бы странно, так как мы были бы вынужденны ввести понятие "время"
0
|
Curry
|
04.03.2017, 12:37
#6
|
Не по теме:
0
|
Заблокирован
|
|
04.03.2017, 13:24 | 7 |
Во-первых, в ФП циклов тоже нет.
Во-вторых, так имитировать аккумулятор невозможно, потому что аккумулятор в общем случае, не обязан накапливаться последовательно или синхронно, он может дергаться из совершенно различных мест программы
0
|
04.03.2017, 13:24 | |
04.03.2017, 13:24 | |
Помогаю со студенческими работами здесь
7
Накопление суммы в циклическом алгоритме Как реализовать накопление суммы Теория и практика вероятностей Г.Шилдт. Теория и практика С++ Вычислить, используя накопление суммы: y = x + 2x + 4x + 16x... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |