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

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

5
Чому читання з пам'яті не є побічним ефектом, а читання з файлу є?
Що саме робить читання з пам'яті процесу чистою операцією? Припустимо, я створив масив із 100 цілих чисел у глобальній пам'яті, а потім взяв 42-й елемент цього масиву. Це не побічний ефект, правда? То чому читає той самий масив із 100 цілих чисел з файлу побічним ефектом?

2
Застосування принципів чистого коду до функціональних мов
Я зараз читаю чистий код Роберта Мартіна . Я думаю, що це здорово, і при написанні коду OO я приймаю його уроки по душі. Зокрема, я вважаю, що його порада використовувати невеликі функції зі значущими іменами змушує мій код протікати більш плавно. Найкраще підсумувати цю цитату: [W] хочемо мати можливість …

8
Психічні моделі або метафори реального світу для функціонального програмування
Хтось має хорошу ментальну модель або метафору для функціонального програмування, яка посилається на щось у реальному світі? Об'єктно-орієнтоване програмування інтуїтивно має для мене сенс. Є речі, які мають властивості, і іноді вони також можуть робити речі або робити розрахунки за своїми властивостями (методами). (Наприклад: Автомобіль, Форма, Кіт). Я веду функціональне …

1
Недоліки функціональної проміжної форми
Я пишу оптимізатор для мови, схожої на JavaScript, і потрібно вибрати проміжне представлення коду. Очевидним / типовим вибором в наші дні є статичне одиночне призначення (SSA). Однак реалізація сучасного компілятора в C також обговорює функціональну проміжну форму, що в основному означає функціонування чистого функціоналу для проміжного представлення (чисте з точки …

2
Які існують типи алгебраїчних даних?
Я читаю про типи даних з алгебраїкою (завдяки Ричарду Мінериху я це знайшов чудове пояснення концепції). Хоча я думаю, що я розумію поняття типів суми та типів продуктів і т. Д., Я не зовсім розумію, наскільки алгебраїчні типи даних є корисними за межами уточнення відповідності шаблонів. Які ще речі можна …

5
Функціональні мови, які збираються в Android Dalvik VM? [зачинено]
Закрито . Це питання має бути більш зосередженим . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб воно зосередило увагу на одній проблемі, лише відредагувавши цю публікацію . Закрито 4 роки тому . У мене є проблема програмного забезпечення, яка відповідає функціональному підходу до програмування, але цільовий …

4
Чому добре не покладатися на зміну стану?
Це запитання виникає з питань /software/25569/is-haskell-worth-learning Як правило, робиться кілька часто повторюваних тверджень про те, як Haskell вдосконалює ваші навички кодування іншими мовами, і, тим більше, це тому, що Haskell без громадянства, і це добре. Чому? Я бачив, як хтось порівнює це лише з набором лівої руки або, можливо, на …

5
Яка користь від того, що “немає винятків із виконання”, як стверджує Elm?
Деякі мови стверджують, що вони не мають "виключень із часу виконання", як явну перевагу перед іншими мовами, які ними є. Я плутаюся в цьому питанні. Наскільки я знаю, і коли добре використовується, виняток з виконання - це лише інструмент: ви можете спілкуватися з "брудними" станами (кидаючи на несподівані дані) додавши …

4
API та функціональне програмування
З мого (правда, обмеженого) впливу функціональних мов програмування, таких як Clojure, здається, що інкапсуляція даних відіграє менш важливу роль. Зазвичай різні типові типи, такі як карти або набори, є бажаною валютою представлення даних над об'єктами. Крім того, ці дані, як правило, незмінні. Наприклад, ось одна з найвідоміших цитат «Rich Hickey …

9
Які б були фактичні аргументи, щоб переконати керівництво високого рівня розглянути функціональне програмування? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 5 років тому . Існує безліч "теоретичних" аргументів, чому функціональне програмування є хорошою ідеєю (занадто багато, щоб це …

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

2
Що таке приклад продовження, яке не реалізується як процедура?
Цікава дискусія про відмінність між зворотними дзвінками та продовженням роботи в режимі SO викликала це питання. За визначенням, продовження - це абстрактне подання логіки, необхідної для завершення обчислення. У більшості мов це проявляється як одна процедура аргументу, якій ви передаєте будь-яке значення, необхідне для подальшої обробки. Чисто функціональною мовою (де …

5
Як називається λx.λf.fx (наприклад, зворотній варіант) в обчисленні лямбда? Чи має відповідна функція стандартне ім'я в програмуванні?
Як називається λx.λf.fx в обчисленні лямбда? Чи має відповідна функція стандартне ім'я у функціональних мовах програмування, як Haskell? Чи існує в об'єктно-орієнтованому програмуванні звичайна назва методу, fooякий приймає функцію як аргумент, такий, що x.foo(f)повертається f(x)?

5
Яка функціонально-програмова альтернатива інтерфейсу?
Якщо я хочу програмувати у "функціональному" стилі, чим би я замінив інтерфейс? interface IFace { string Name { get; set; } int Id { get; } } class Foo : IFace { ... } Може бути Tuple<>? Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo; Єдина причина, що я в першу …

4
Чи називає groovy часткове застосування «каррінг»?
У Groovy існує концепція, яку він називає «каррінг». Ось приклад з їхньої вікі: def divide = { a, b -> a / b } def halver = divide.rcurry(2) assert halver(8) == 4 Я розумію, що відбувається тут, полягає в тому, що правий аргумент divideприв’язується до значення 2. Це здається формою …

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