Запитання з тегом «functional-programming»

Функціональне програмування - парадигма програмування, заснована на побудові абстракцій з використанням функцій, уникаючи побічних ефектів і зміни стану. Чисте функціональне програмування є безпечним для потоків.

9
Які переваги функціонального програмування? [зачинено]
В даний час це питання не підходить для нашого формату запитань та відповідей. Ми очікуємо, що відповіді будуть підтверджені фактами, посиланнями чи експертизою, але це питання, швидше за все, вимагатиме дебатів, аргументів, опитування чи розширеного обговорення. Якщо ви вважаєте, що це питання можна покращити і, можливо, знову відкрити, відвідайте довідковий …

1
Пояснення комбінаторів для працюючої людини
Що таке комбінатор ?? Це "функція чи визначення без вільних змінних" (як визначено в SO)? Або як щодо цього: за словами Джона Х'юза у його відомій статті про Стрілки, «комбінатор - це функція, яка будує програмні фрагменти з фрагментів програми» , що є вигідним, оскільки «... програміст, використовуючи комбінатори, будує …

3
Впорядкування параметрів для використання каррі
Нещодавно я двічі переробляв код для того, щоб змінити порядок параметрів, тому що там було занадто багато коду, де хакі подобаються flipабо \x -> foo bar x 42відбуваються. При розробці підпису функції, які принципи допоможуть мені найкраще використовувати каррі?

10
Чи можу я створити більше двох списків разом у Scala?
Враховуючи такий список Scala: val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3")) Як я можу отримати: List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3")) Оскільки zip можна використовувати лише для поєднання двох Списків, я думаю, вам потрібно буде якось повторити / зменшити основний список. Не …

4
Як написати функцію, яка повертає іншу функцію?
У Python я хотів би написати функцію, make_cylinder_volume(r)яка повертає іншу функцію. Ця повернена функція повинна викликатися параметром hі повертати об'єм циліндра з висотою hта радіусом r. Я знаю, як повернути значення з функцій у Python, але як повернути іншу функцію ?

9
Як працюють мови функціонального програмування?
Якщо функціональні мови програмування не можуть врятувати будь-який стан, як вони виконують такі прості речі, як читання вводу від користувача? Як вони "зберігають" вхідні дані (або зберігають будь-які дані щодо цього?) Наприклад: як би ця проста C річ переклалася на функціональну мову програмування, як Haskell? #include<stdio.h> int main() { int …

8
Як / чому функціональні мови (зокрема Erlang) добре масштабуються?
Я деякий час спостерігав за зростаючою видимістю функціональних мов програмування та функцій. Я зазирнув до них і не побачив причини апеляції. Тоді нещодавно я відвідав презентацію Кевіна Сміта "Основи Ерланга" у Codemash . Мені сподобалась презентація і я дізнався, що багато атрибутів функціонального програмування значно полегшують уникнення проблем із потоками …

5
Чи виконує Ruby оптимізацію хвостових дзвінків?
Функціональні мови призводять до використання рекурсії для вирішення багатьох проблем, і тому багато з них виконують Оптимізацію виклику хвоста (TCO). TCO викликає виклики функції з іншої функції (або її самої, в цьому випадку ця функція також відома як Усунення рекурсії хвоста, що є підмножиною TCO), як останній крок цієї функції, …

5
Чому я не можу зіставити цілі числа з рядками під час потокової передачі з масиву?
Цей код працює (взято в Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Цей не може бути скомпільований: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEA каже мені, що у мене …


5
реалізація умовиводу типу
Я бачу тут кілька цікавих дискусій щодо статичного та динамічного набору тексту. Я, як правило, віддаю перевагу статичному набору тексту, завдяки перевірці типу компіляції, кращому документованому коду і т. Д. Однак я погоджуюсь, що вони дійсно захаращують код, якщо це робиться так, як це робить Java, наприклад. Тож я збираюся …

6
Що таке поліморфізм у Javascript?
Я прочитав кілька можливих статей, які міг знайти в Інтернеті про поліморфізм . Але я думаю, що я не міг повністю зрозуміти значення цього та його значення. У більшості статей не сказано, чому це важливо і як я можу досягти поліморфної поведінки в ООП (звичайно, у JavaScript). Я не можу …

1
Як створити стиснення списків у списку
Я хочу заархівувати наступний список списків: >>> zip([[1,2], [3,4], [5,6]]) [[1,3,5], [2,4,6]] Цього можна досягти за допомогою поточної zipреалізації, лише якщо список розділений на окремі компоненти: >>> zip([1,2], [3,4], [5,6]) (1, 3, 5), (2, 4, 6)] Не можу зрозуміти, як розділити список і передати окремі елементи zip. Переважним є функціональне …

6
Чому я можу визначити структури та класи всередині функції в C ++?
Я просто помилково зробив щось подібне в C ++, і це працює. Чому я можу це зробити? int main(int argc, char** argv) { struct MyStruct { int somevalue; }; MyStruct s; s.somevalue = 5; } Тепер, зробивши це, я якось згадав, як колись давно читав про цей трюк як свого …

15
Напишіть перекладача Haskell у Haskell
Класичною вправою програмування є написання перекладача Lisp / Scheme у Lisp / Scheme. Потужність повної мови може бути використана для створення перекладача для підмножини мови. Чи існує подібна вправа для Хаскелла? Я хотів би реалізувати підмножину Haskell, використовуючи Haskell як движок. Звичайно, це можна зробити, але чи є в мережі …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.