SM

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

3,4 тыс. stars Качество 72 Тренд 41MIT

🦄 Монады и популярные абстракции FP, работающие на Go 1.18+ Generics (Опция, Результат, Любой и т.д.)

Обзор

- samber/ro: Реактивное программирование для Go: декларативный и композитируемый API для событийно-ориентированных приложений - samber/lo: Библиотека Go в стиле Lodash на базе генериков Go 1.18+ - samber/do: Инструмент для инъекции зависимостей, основанный на Go 1.18+ Generics - samber/cc-skills-golang: AI Agent Skills для Golang 💖 Спонсор: DBOS — Библиотека оркестрации прочных рабочих процессов для Go Мне очень нравится такая утилитарная библиотека. Это название похоже на «Monad Go», и ни один пакет Go не использует это имя. В настоящее время мы поддерживаем следующие типы данных: - Option[T] (Возможно) - Result[T] - Either[A, B] - EitherX[T1, ..., TX] (с X между 3 и 5) - Future[T] - IO[T] - IOEither[T] - Task[T] - TaskEither[T] - State[S, A] Эта библиотека — v1 и строго следует SemVer. До версии 2.0.0 в экспортируемых API не будет вноситься никаких ключевых изменений. В этой библиотеке нет зависимостей, кроме библиотеки Go std.

Обзор (машинный перевод)

🦄 samber/mo добавляет монады и популярные абстракции FP в проекты Go. samber/mo использует недавние генерики Go 1.18+.

Вдохновлено:

  • Scala
  • Ржавчина
  • FP-TS

См. также:

  • samber/ro: Реактивное программирование для Go: декларативный и компоноваемый API для приложений, управляемых событиями
  • samber/lo: Библиотека Go в стиле Lodash, основанная на Go 1.18+ Generics
  • samber/do: набор инструментов для инъекции зависимостей на базе генериков Go 1.18+
  • samber/cc-skills-golang: Навыки агента ИИ для Golang

💖 Спонсоры:

DBOS — надёжная библиотека оркестрации рабочих процессов для Go


Почему это имя?

Мне очень нравится короткое имя для такой утилитарной библиотеки. Это название похоже на «Monad Go», и ни один пакет Go не использует это имя.

💡 Особенности

В настоящее время мы поддерживаем следующие типы данных:

  • Option[T] (Возможно)
  • Result[T]
  • Either[A, B]
  • EitherX[T1, ..., TX] (X от 3 до 5)
  • Future[T]
  • IO[T]
  • IOEither[T]
  • Task[T]
  • TaskEither[T]
  • State[S, A]

🚀 Установка

Эта библиотека — v1 и строго следует SemVer.

До версии 2.0.0 в экспортируемых API не будет вноситься никаких ключевых изменений.

В этой библиотеке нет зависимостей, кроме библиотеки Go std.

💡 Быстрый старт

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

README

Показан фрагмент оригинального README. Открыть оригинал.

mo - Monads

🦄 samber/mo brings monads and popular FP abstractions to Go projects. samber/mo uses the recent Go 1.18+ Generics.

Inspired by:

  • Scala
  • Rust
  • FP-TS

See also:

  • samber/ro: Reactive Programming for Go: declarative and composable API for event-driven applications
  • samber/lo: A Lodash-style Go library based on Go 1.18+ Generics
  • samber/do: A dependency injection toolkit based on Go 1.18+ Generics
  • samber/cc-skills-golang: AI Agent Skills for Golang


Why this name?

I love short name for such utility library. This name is similar to “Monad Go” and no Go package uses this name.

💡 Features

We currently support the following data types:

  • Option[T] (Maybe)
  • Result[T]
  • Either[A, B]
  • EitherX[T1, ..., TX] (With X between 3 and 5)
  • Future[T]
  • IO[T]
  • IOEither[T]
  • Task[T]
  • TaskEither[T]
  • State[S, A]

🚀 Install

go get github.com/samber/mo@v1

# AI Agent Skill
npx skills add https://github.com/samber/cc-skills-golang --skill golang-samber-mo

This library is v1 and follows SemVer strictly.

No breaking changes will be made to exported APIs before v2.0.0.

This library has no dependencies except the Go std lib.

💡 Quick start

You can import mo using:

import (
    "github.com/samber/mo"
)

Quick example using the option sub-package Pipe3 to compose transformations:

import (
    "github.com/samber/mo"
    "github.com/samber/mo/option"
)

out := option.Pipe3(
    mo.Some(21),
    option.Map(func(v int) int { return v * 2 }),
    option.FlatMap(func(v int) mo.Option[int] { return mo.None[int]() }),
    option.Map(func(v int) int { return v + 21 }),
)
// out == None[int]

Then use one of the helpers below:

Открыть полный README на GitHub

Рекомендуемые инструменты

Попробуйте другой запрос или уберите фильтр.

Установка

npx skillfish add samber/mo
Новичок в MCP? Начните с руководства на mcpskill.org →