packages feed

integer-conversion-0.1: src-other/Naive.hs

module Naive (
    textToInteger,
    byteStringToInteger,
    stringToInteger,
) where

import Data.Char (ord)

import qualified Data.ByteString as BS
import qualified Data.List       as L
import qualified Data.Text       as T

textToInteger :: T.Text -> Integer
textToInteger = T.foldl' (\acc c -> acc * 10 + toInteger (ord c - 48)) 0

byteStringToInteger :: BS.ByteString -> Integer
byteStringToInteger = BS.foldl' (\acc c -> acc * 10 + toInteger c - 48) 0

stringToInteger :: String -> Integer
stringToInteger = L.foldl' (\acc c -> acc * 10 + toInteger (ord c - 48)) 0