https://github.com/pavelannin/monadic-kotlin
Monadic is a distributed multiplatform Kotlin framework that provides a way to write code from functional programming
https://github.com/pavelannin/monadic-kotlin
either functional-programming kotlin lce monad multiplatform optional
Last synced: 4 months ago
JSON representation
Monadic is a distributed multiplatform Kotlin framework that provides a way to write code from functional programming
- Host: GitHub
- URL: https://github.com/pavelannin/monadic-kotlin
- Owner: pavelannin
- License: apache-2.0
- Created: 2024-04-05T07:41:21.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-26T04:18:46.000Z (6 months ago)
- Last Synced: 2025-01-12T14:47:32.457Z (6 months ago)
- Topics: either, functional-programming, kotlin, lce, monad, multiplatform, optional
- Language: Kotlin
- Homepage:
- Size: 242 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README-RU.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[EN](README.md) | RU
[](https://opensource.org/licenses/Apache-2.0)


# Что такое Monadic
Monadic - это распределенный Kotlin multiplatform библиотека, который предоставляет восможность использование
функционального программирования в Kotlin.## Что значит распределенный фреймворк
Monadic позволяет вам включать в зависимости только ту часть, которую вы планируете использовать в проекте.Зачастую разработчики не добавляют в свои проекты большие функциональные библиотеки из-за излишней нагруженности,
увеличение размера приложения и возмжности использования другими разработчиками нежелательной части библиотеки.Monadic решает эту проблему - подключайте только те части библиотеки которые планируете использовать.
# Как использовать
## Использование BOM
Спецификации `BOM` позволяет вам управлять всеми версиями библиотеки Monadic, указав только версию спецификации.
Сама спецификация содержит ссылки на версии различных библиотек Monadic. При использовании спецификации в вашем приложении
вам не нужно добавлять какую-либо версию зависимости библиотеки Monadic. Когда вы обновляете версию спецификации,
все используемые вами библиотеки автоматически обновляются до новых версий.Рекомендуется использование спецификацию `BOM`, если используете больше одной части библиотеки Monadic.
```gradle
implementation(platform("io.github.pavelannin:monadic-bom:"))
```## Checkable
Тип `Checkable` - это функциональная конструкция, используемая для расширения любого типа состояниями:
проверенно (отмеченно) или непроверенно (неотмеченно).`Checkable` удабно использовать на уровне бизнеслогики и view стейтов приложений.
```gradle
implementation("io.github.pavelannin:monadic-checkable-core")
```## Either
Монада `Either` - это функциональная конструкция, используемая для обработки альтернативных результатов или ошибок.
Типизированные ошибки относятся к технике функционального программирования, в которой явно в сигнатуре описываются потенциальные ошибки,
которые могут возникнуть во время выполнения операции.```gradle
implementation("io.github.pavelannin:monadic-either-core")
```## Функции
Утилиты для функций в функциональном стиле: композиция, каррирование и т.д.
```gradle
implementation("io.github.pavelannin:monadic-function-core")
```## Identifiable
Тип `Identifiable` представляет собой универсальную конструкцию, предназначенную для идентификации типов.
Используется для добавления типизированного идентификатора к любому типу.```gradle
implementation("io.github.pavelannin:monadic-identifiable-core")
```## LCE
Монада `LCE` - это функциональная конструкция, используемая для обработки состояния операций (состоящих из 3 состояний: выполнение,
выполненено успешно и ошибка).Удобное использование для определения состояния экрана или операции на пользовательском представлении
(использование в MVI подходах).```gradle
implementation("io.github.pavelannin:monadic-lce-core")
```### LCE - Either (Extensions)
Набор утилит расширяющие возможности `LCE` и `Either`.
```gradle
implementation("io.github.pavelannin:monadic-lce-either")
```### LCE - Result (Extensions)
Набор утилит расширяющие возможности `LCE` и `Result`.
```gradle
implementation("io.github.pavelannin:monadic-lce-result")
```## Optional
Монада `Optinal` - это функциональная конструкция, используемая для значения, которое может быть `null`.
```gradle
implementation("io.github.pavelannin:monadic-optional-core")
```### Optional - Either (Extensions)
Набор утилит расширяющие возможности `Optional` и `Either`.
```gradle
implementation("io.github.pavelannin:monadic-optional-either")
```## Refreshable
Тип `Refreshable` - это функциональная конструкция, используемая для расширения любого типа
состояниями: обновляется или обновленно.`Refreshable` удабно использовать на уровне бизнеслогики и view стейтов приложений.
```gradle
implementation("io.github.pavelannin:monadic-refreshable-core")
```## Result
Монада `Result` - это функциональная конструкция, представляет успех (`Result.Ok`) или неудачу (`Result.Error`]).
```gradle
implementation("io.github.pavelannin:monadic-result-core")
```