lue-bird/elm-morph/1.0.0

NOTE: the latest version is 3.0.1

N.Morph

in_ :
( N
(In
lowerLimitMin
(Up lowerLimitMinX_ To (Add1 lowerLimitMinPlusX_))
)
, N
(In (Up upperLimitMinX_ To upperLimitMinPlusX_) upperLimitMax)
)
-> MorphIndependently
( N (In narrowMin_ narrowMax_)
-> Result Error (N (In lowerLimitMin upperLimitMax))
)
(N broadRange -> N broadRange)

Morph the N to a more narrow range

transform

MorphIndependently
(Natural -> Result error_ (N (Min (Up0 minX_))))
(N range_ -> Natural)
bit :
MorphIndependently
(Bit -> Result error_ (N (In (Up0 minX_) (Up1 maxX_))))
(N (In min_ (Up maxTo1_ To N1)) -> Bit)

Bit.O ↔ n0, Bit.I ↔ n1.

Inverse of Bit.Morph.n

( N
(In
lowerLimitMin
(Up lowerLimitMaxToUpperLimitMin_ To upperLimitMin)
)
, N (In (On upperLimitMin) upperLimitMax)
)
-> MorphIndependently
(Char -> Result Error (N (In lowerLimitMin upperLimitMax)))
(N (In narrowMin_ (Up narrowMaxTo9_ To N9)) -> Char)

Morph a digit in a given range

import Morph
import N exposing (n1, n2, n7, n9)


'5'
    |> Morph.toNarrow (N.Morph.inChar ( n1, n7 ))
    |> Result.map N.toInt
--> Ok 5


'1'
    |> Morph.toNarrow (N.Morph.inChar ( n2, n9 ))
    |> Result.toMaybe
--> Nothing