{-# LANGUAGE Safe #-}
module Data.Char.Number.Segmented (
segmentedDigit, segmentedDigit'
) where
import Data.Char(chr)
_segmentedDigit :: Int -> Char
_segmentedDigit :: Int -> Char
_segmentedDigit Int
n
| Int
0 Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
n Bool -> Bool -> Bool
&& Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
9 = Int -> Char
chr (Int
0x1fbf0 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
n)
| Bool
otherwise = Char
'\xfffd'
segmentedDigit' :: Integral i
=> i
-> Char
segmentedDigit' :: i -> Char
segmentedDigit' = Int -> Char
_segmentedDigit (Int -> Char) -> (i -> Int) -> i -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. i -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral
segmentedDigit :: Integral i
=> i
-> Maybe Char
segmentedDigit :: i -> Maybe Char
segmentedDigit i
n
| i
n i -> i -> Bool
forall a. Ord a => a -> a -> Bool
>= i
0 Bool -> Bool -> Bool
&& i
n i -> i -> Bool
forall a. Ord a => a -> a -> Bool
<= i
9 = Char -> Maybe Char
forall a. a -> Maybe a
Just (i -> Char
forall i. Integral i => i -> Char
segmentedDigit' i
n)
| Bool
otherwise = Maybe Char
forall a. Maybe a
Nothing