DOI: https://doi.org/10.18523/2617-3808.2018.33-39

Розробка HTTP-сервісу на функційній предметно-орієнтованій мовіпрограмування на базі вільних монад

Oleksii Savenkov

Анотація


Розробка веб­сервісів чистим функційним способом є нетривіальною задачею через те, що там зазвичай наявні виклики бази даних на всіх етапах обробки запиту сервера, що ускладнює виокремлення функційного ядра коду, а це є основним принципом розробки функційної архітектури програми. Цю публікацію присвячено вирішенню цієї проблеми вільними монадами, за допомогою яких код, що працює зі змінними даними, можна розділити на функційне представлення імперативних операцій, що визначаються створеними на базі вільних монад предметно­орієнтованими мовами програмування (англ. Domain­Specific Language, або DSL), та інтерпретатор, що власне виконує ці операції. У статті наведено основні принципи використання вільних монад та їхні переваги в контексті задачі розробки HTTP­сервісу.


Ключові слова


функційне програмування; вільні монади; предметно-орієнтована мова програмування; чисті функції; функційний веб-сервіс

Повний текст:

PDF

Посилання


Kashyrets, V., Kinakh, Ya. I. (2013) Perevahy funktsionalnoi paradyhmy pry rozrobtsi prohramnoho zabezpechennia. Materialy Ⅲ naukovo-tekhnichnoi konferentsii "Informatsiini modeli, systemy ta tekhnolohii" (Ternopil, April 24, 2013), pp. 41 [in Ukrainian].

Free Monad. (n.d.). In Typelevel online. Retrieved from https://typelevel.org/cats/datatypes/freemonad.html

O’Sullivan B. & Stewart, D. & Goerzen, J. (2009). Real World Haskell. Sebastopol, USA : O’Reilly.

Petricek, T. & Syme, D. (2014). The F# Computation Expression Zoo. In: Proceedings of PADL, PADL 2014, pp. 33–48. Cham, Switzerland : Springer.

Typeclassopedia. (n.d.). In HaskellWiki online. — Retrieved from https://wiki.haskell.org/Typeclassopedia






Copyright (c) 2018 Oleksii Savenkov

Creative Commons License
Ця робота ліцензована Creative Commons Attribution 4.0 International License.



2018-2019, National University of Kyiv-Mohyla Academy
2 Skovorody Str., Kyiv 04070, Ukraine

Creative Commons License
This journal is licensed under a
Creative Commons Attribution 4.0 International License