lue-bird / elm-morph / Result.Morph

Morph an elm/core Result error success

toOk : MorphIndependently (Result narrowError narrowSuccess -> Result (Morph.ErrorWithDeadEnd narrowError) narrowSuccess) (broadSuccess -> Result broadSuccess_ broadSuccess)

Ok success succeeds with the success, Err error fails with the error.

import Morph
import Char.Morph

Ok 'Y'
    |> Morph.toNarrow
        (Char.Morph.only 'Y'
            |> Morph.over Result.Morph.toOk
        )
--> Ok ()

Err [ "Hiyo", "!" ]
    |> Morph.toNarrow Result.Morph.toOk
--> Err (Morph.DeadEnd [ "Hiyo", "!" ])

If your error type is not a String, you will need |> Morph.errorMap (Morph.deadEndMap ..your error to String..) to make dead end types unify.

toErr : MorphIndependently (Result narrowError narrowSuccess_ -> Result Morph.Error narrowError) (broadError -> Result broadError broadSuccess_)

Err error succeeds with the error, Ok fails.

import Morph
import Char.Morph

Err 'Y'
    |> Morph.toNarrow
        (Char.Morph.only 'Y'
            |> Morph.over Result.Morph.toErr
        )
--> Ok ()

Ok [ "Bye", "!" ]
    |> Morph.toNarrow Result.Morph.toErr
--> Err (Morph.DeadEnd "ok")