Quick actions

cmd+k|ctrl+k

Navigation

Languages

Hex to decimal

Snippet info

Language

Haskell

Visibility

public

Author

petter.egesund

Created

2015-07-14T00:38:58Z

Updated

2015-07-14T16:23:05Z

import Data.Char
import Data.Functor
import Control.Applicative
import Data.List

toDig :: Char -> Maybe Int
toDig c =
  elemIndex c "0123456789abcdef"

toNumList :: [Char] -> [Maybe Int]
toNumList = map (toDig . toLower)

toNumRec :: [Maybe Int] -> Int -> Maybe Int -> Maybe Int
toNumRec [] i acc = acc
toNumRec (f:rest) i acc =
  let acc' = liftA2 (\acc f -> ((16^i)*f) + acc) acc f              
   in toNumRec rest (i+1) acc'              

toDec str = toNumRec (reverse (toNumList str)) 0 (Just 0) 

main = do
  let res = toDec "aa"
  print res
INFO