MackeyRMS / elm-accessors / Result.Accessors

ok : Base.Prism_ pr (Result ignored a) (Result ignored b) a b x y

This accessor lets you access values inside the Ok variant of a Result.

import Accessors exposing (..)
import Result.Accessors as Result
import Lens as L

maybeRecord : { foo : Result String { bar : Int }, qux : Result String { bar : Int } }
maybeRecord = { foo = Ok { bar = 2 }
              , qux = Err "Not an Int"
              }

try (L.foo << Result.ok << L.bar) maybeRecord
--> Just 2

try (L.qux << Result.ok << L.bar) maybeRecord
--> Nothing

map (L.foo << Result.ok << L.bar) ((+) 1) maybeRecord
--> { foo = Ok { bar = 3 }, qux = Err "Not an Int" }

map (L.qux << Result.ok << L.bar) ((+) 1) maybeRecord
--> { foo = Ok { bar = 2 }, qux = Err "Not an Int" }

err : Base.Prism_ pr (Result a ignored) (Result b ignored) a b x y

This accessor lets you access values inside the Err variant of a Result.

import Accessors exposing (..)
import Result.Accessors as Result
import Lens as L

maybeRecord : { foo : Result String { bar : Int }, qux : Result String { bar : Int } }
maybeRecord = { foo = Ok { bar = 2 }
              , qux = Err "Not an Int"
              }

try (L.foo << Result.err) maybeRecord
--> Nothing

try (L.qux << Result.err) maybeRecord
--> Just "Not an Int"

map (L.foo << Result.err) String.toUpper maybeRecord
--> { foo = Ok { bar = 2 }, qux = Err "Not an Int" }

map (L.qux << Result.err) String.toUpper maybeRecord
--> { foo = Ok { bar = 2 }, qux = Err "NOT AN INT" }