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

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


1
Які інтуїції підтримують виклик конструктора "Можливо" в Haskell "Просто"?
Інтуїція необов'язкового типу типу Maybe Intє те, що або немає Int (таким чином, є Nothingтам), або що є якийсь Int; є щось там. Для мене є сенс, що ми називаємо конструктор типу для "негативного" випадку Nothing, оскільки це означає саме те - що його там немає Int. Але навіщо вживати …

2
Чи можемо ми реально використовувати незмінність в OOP, не втрачаючи всіх основних функцій OOP?
Я бачу переваги того, щоб зробити об’єкти в своїй програмі незмінними. Коли я по-справжньому глибоко замислююся над гарним дизайном для свого застосування, я часто природно діходжу до багатьох моїх об'єктів, непорушних. Часто доходить до того, що я хотів би, щоб усі мої об’єкти були незмінні. Це питання стосується тієї ж …

6
Як це було б запрограмовано в не-OO? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 2 роки тому . Читаючи жахливу статтю про недоліки ООП на користь якоїсь іншої парадигми, я натрапив на …

5
Як у функціональному програмуванні можна досягти модульності за допомогою математичних законів?
Я читав у цьому запитанні, що функціональні програмісти, як правило, використовують математичні докази, щоб переконатися, що їх програма працює правильно. Це звучить набагато простіше і швидше, ніж тестування одиниць, але виходячи з фону OOP / Unit Testing, я ніколи не бачив цього робити. Ви можете мені це пояснити і навести …

2
Ефективність пам'яті Haskell - який кращий підхід?
Ми реалізуємо бібліотеку стиснення матриць на основі модифікованого синтаксису двомірної граматики. Зараз у нас є два підходи для наших типів даних - який буде кращим у випадку використання пам'яті? (ми хочемо щось стиснути;)). Граматики містять NonTerminals з точно 4-ма творами або терміналом праворуч. Нам потрібні назви виробництва для перевірки рівності …

3
Чому ми не можемо записати вкладені скорочені функції у Clojure?
Я намагався сьогодні оцінити вираз Clojure за допомогою вкладених скорочених функцій, і це мені не дозволило. Вираз: (#(+ % (#(+ % (* % %)) %)) 5) ; sorry for the eye bleed Вихід був: IllegalStateException Nested #()s are not allowed clojure.lang.LispReader$FnReader.invoke (LispReader.java:630) ...and a bunch of other garbage

5
Обчисліть, якщо функція чиста
Відповідно до Вікіпедії: У комп'ютерному програмуванні функція може бути описана як чиста, якщо обидва ці твердження про функцію утримуються: Функція завжди оцінює одне і те саме значення результату, задане тим самим значенням аргументів. Значення результату функції не може залежати від будь-якої прихованої інформації або стану, яка може змінюватися в ході …

1
Чому Scala вимагає, щоб функції мали явний тип повернення?
Нещодавно я почав вчитися програмувати в Scala, і до цього часу було весело. Мені дуже подобається здатність оголошувати функції в межах іншої функції, яка просто здається інтуїтивно зрозумілою. Одним із поглядів домашніх улюбленців, що у мене є щодо Scala, є те, що Scala вимагає явного типу повернення у своїх функціях …

3
Чи є кращою практикою попередньо ініціалізувати атрибути в класі чи додавати їх по дорозі?
Вибачте, якщо це АБСОЛЮТНО-софістичне питання, але мені цікаво, які найкращі практики є там, і я не можу знайти хорошу відповідь у Google. У Python я зазвичай використовую порожній клас як контейнер структури суперкачальних даних (на зразок файлу JSON) і додаю атрибути попутно: class DataObj: "Catch-all data object" def __init__(self): pass …

3
Передовий досвід функціонального програмування Scala або Clojure
Я багато робив кодування для самостійного вивчення, мав певний досвід роботи з моделями паралельного програмування: Актори, Пам'ять транзакційних програм, Потік даних. Коли я намагаюся застосувати ці архітектури до реального життя - до веб-додатків із високим навантаженням - будь-яка модель не підтримує довговічність та стійкість даних. Реальні життєві завдання потребують збереження …

5
Перетворіть список значень 24-годинних опадів у загальну кількість годин
Скажімо, у мене є список значень опадів за годиною, кожен із яких показує, скільки дощу трапилося за попередні 24 години, упорядкований за датою. Наприклад: { '2012-05-24 12:00': 0.5, // .5" of rain from 5/23 12:00 - 5/24 11:59 '2012-05-24 11:00': 0.6, // .6" of rain from 5/23 11:00 - 5/24 …

4
Дизайн на «змішаних» мовах: об’єктно-орієнтований дизайн або функціональне програмування?
В останні кілька років мови, які я люблю використовувати, стають все більш "функціональними". Зараз я використовую мови, які є свого роду "гібридом": C #, F #, Scala. Мені подобається розробляти свої програми за допомогою класів, які відповідають об’єктам домену, і використовую функціональні функції, де це робить кодування простішим, зручнішим та …

1
Шаблони інтерфейсу користувача у функціональних мовах
Мені хотілося б почати хитрувати з ClojureScript, але я спантеличений деякими моментами. Моя проблема полягає в тому, що є хорошим способом боротьби зі змінами стану, що виникають в результаті взаємодії з користувачем, коли ви намагаєтесь працювати функціонально. Дозвольте навести пару прикладів. Я маю на увазі програми, які працюють у браузері, …

5
Структури даних у функціональному програмуванні
В даний час я граю з LISP (зокрема, Scheme та Clojure) і мені цікаво, як типові структури даних обробляються у функціональних мовах програмування. Наприклад, скажімо, що я хотів би вирішити проблему, використовуючи алгоритм графічного нанесення графіків. Як ти зазвичай можеш представити цей графік у функціональній мові програмування (насамперед цікавий чистий …

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