Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month 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 (11 months ago)
- Default Branch: main
- Last Pushed: 2024-12-24T03:35:02.000Z (about 2 months ago)
- Last Synced: 2024-12-24T04:22:50.120Z (about 2 months ago)
- Topics: either, functional-programming, kotlin, lce, monad, multiplatform, optional
- Language: Kotlin
- Homepage:
- Size: 197 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
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
![badge-jvm](http://img.shields.io/badge/platform-jvm-DB413D.svg?style=flat)
![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat)
![badge-ios](http://img.shields.io/badge/platform-ios-lightgray?style=flat)# Что такое Monadic
Monadic - это распределенный Kotlin multiplatform библиотека, который предоставляет восможность использование
функционального программирования в Kotlin.## Что значит распределенный фреймворк
Monadic позволяет вам включать в зависимости только ту часть, которую вы планируете использовать в проекте.Зачастую разработчики не добавляют в свои проекты большие функциональные библиотеки из-за излишней нагруженности,
увеличение размера приложения и возмжности использования другими разработчиками нежелательной части библиотеки.Monadic решает эту проблему - подключайте только те части библиотеки которые планируете использовать.
# Как использовать
## Использование BOM
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-bom?label=monadic-bom)Спецификации `BOM` позволяет вам управлять всеми версиями библиотеки Monadic, указав только версию спецификации.
Сама спецификация содержит ссылки на версии различных библиотек Monadic. При использовании спецификации в вашем приложении
вам не нужно добавлять какую-либо версию зависимости библиотеки Monadic. Когда вы обновляете версию спецификации,
все используемые вами библиотеки автоматически обновляются до новых версий.Рекомендуется использование спецификацию `BOM`, если используете больше одной части библиотеки Monadic.
```gradle
implementation(platform("io.github.pavelannin:monadic-bom:"))
```## Checkable
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-checkable-core?label=monadic-checkable-core)Тип `Checkable` - это функциональная конструкция, используемая для расширения любого типа состояниями:
проверенно (отмеченно) или непроверенно (неотмеченно).`Checkable` удабно использовать на уровне бизнеслогики и view стейтов приложений.
```gradle
implementation("io.github.pavelannin:monadic-checkable-core")
```## Either
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-either-core?label=monadic-either-core)Монада `Either` - это функциональная конструкция, используемая для обработки альтернативных результатов или ошибок.
Типизированные ошибки относятся к технике функционального программирования, в которой явно в сигнатуре описываются потенциальные ошибки,
которые могут возникнуть во время выполнения операции.```gradle
implementation("io.github.pavelannin:monadic-either-core")
```## Функции
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-function-core?label=monadic-function-core)Утилиты для функций в функциональном стиле: композиция, каррирование и т.д.
```gradle
implementation("io.github.pavelannin:monadic-function-core")
```## Identifiable
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-identifiable-core?label=monadic-identifiable-core)Тип `Identifiable` представляет собой универсальную конструкцию, предназначенную для идентификации типов.
Используется для добавления типизированного идентификатора к любому типу.```gradle
implementation("io.github.pavelannin:monadic-identifiable-core")
```## LCE
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-lce-core?label=monadic-lce-core)Монада `LCE` - это функциональная конструкция, используемая для обработки состояния операций (состоящих из 3 состояний: выполнение,
выполненено успешно и ошибка).Удобное использование для определения состояния экрана или операции на пользовательском представлении
(использование в MVI подходах).```gradle
implementation("io.github.pavelannin:monadic-lce-core")
```### LCE - Either (Extensions)
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-lce-either?label=monadic-lce-either)Набор утилит расширяющие возможности `LCE` и `Either`.
```gradle
implementation("io.github.pavelannin:monadic-lce-either")
```### LCE - Result (Extensions)
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-lce-result?label=monadic-lce-result)Набор утилит расширяющие возможности `LCE` и `Result`.
```gradle
implementation("io.github.pavelannin:monadic-lce-result")
```## Optional
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-optional-core?label=monadic-optional-core)Монада `Optinal` - это функциональная конструкция, используемая для значения, которое может быть `null`.
```gradle
implementation("io.github.pavelannin:monadic-optional-core")
```### Optional - Either (Extensions)
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-optional-either?label=monadic-optional-either)Набор утилит расширяющие возможности `Optional` и `Either`.
```gradle
implementation("io.github.pavelannin:monadic-optional-either")
```## Refreshable
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-refreshable-core?label=monadic-refreshable-core)Тип `Refreshable` - это функциональная конструкция, используемая для расширения любого типа
состояниями: обновляется или обновленно.`Refreshable` удабно использовать на уровне бизнеслогики и view стейтов приложений.
```gradle
implementation("io.github.pavelannin:monadic-refreshable-core")
```## Result
![Maven Central](https://img.shields.io/maven-central/v/io.github.pavelannin/monadic-result-core?label=monadic-result-core)Монада `Result` - это функциональная конструкция, представляет успех (`Result.Ok`) или неудачу (`Result.Error`]).
```gradle
implementation("io.github.pavelannin:monadic-result-core")
```