SkillAgentSearch skills...

Reather

Either transformed Reader monad (reather = REAder + eiTHER)

Install / Use

/learn @jechol/Reather
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

mix test Hex version badge License badge Coverage Status

reather<sub>[ˈriːθə(r)]</sub> is def for Witchcraft's Reader + Either monads.

Installation

The package can be installed by adding reather to your list of dependencies in mix.exs:

def deps do
  [{:reather, "~> 0.1"}]
end

To format reather like def, add following to your .formatter.exs

locals_without_parens: [reather: 2]

Usage

reather, ask, let, run

defmodule Example do
  use Reather

  reather next(number) do
    n <- number
    %{step: step} <- Reather.ask()

    let sum = n + step
    sum
  end

  test "next/1" do
    assert Right.new(15) == next(10) |> Reather.run(%{step: 5})
    assert Right.new(15) == next(Right.new(10)) |> Reather.run(%{step: 5})
    assert Right.new(15) == next(Reather.of(10)) |> Reather.run(%{step: 5})

    assert Left.new(:NaN) == next(Left.new(:NaN)) |> Reather.run(%{step: 5})
    assert Left.new(:NaN) == next(Reather.of(Left.new(:NaN))) |> Reather.run(%{step: 5})
  end
end

License

This project is licensed under the MIT License - see the LICENSE file for details

View on GitHub
GitHub Stars12
CategoryDevelopment
Updated8mo ago
Forks0

Languages

Elixir

Security Score

67/100

Audited on Jul 27, 2025

No findings