Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
- boolBinop :: (Bool -> Bool -> Bool) -> [EgisonVal] -> ThrowsError EgisonVal
- numericSglop :: (Integer -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal
- floatSglop :: (Double -> Double) -> [EgisonVal] -> ThrowsError EgisonVal
- floatNumSglop :: (Double -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal
- numericBinop :: (Integer -> Integer -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal
- floatBinop :: (Double -> Double -> Double) -> [EgisonVal] -> ThrowsError EgisonVal
- numBoolBinop :: (Integer -> Integer -> Bool) -> [EgisonVal] -> ThrowsError EgisonVal
- floatBoolBinop :: (Double -> Double -> Bool) -> [EgisonVal] -> ThrowsError EgisonVal
- floatFloor :: [EgisonVal] -> ThrowsError EgisonVal
- floatCeiling :: [EgisonVal] -> ThrowsError EgisonVal
- floatTruncate :: [EgisonVal] -> ThrowsError EgisonVal
- floatRound :: [EgisonVal] -> ThrowsError EgisonVal
- numExpt :: [EgisonVal] -> ThrowsError EgisonVal
- numSqrt :: [EgisonVal] -> ThrowsError EgisonVal
- numExp :: [EgisonVal] -> ThrowsError EgisonVal
- numLog :: [EgisonVal] -> ThrowsError EgisonVal
- unpackBool :: EgisonVal -> ThrowsError Bool
- unpackNum :: EgisonVal -> ThrowsError Integer
- unpackFloat :: EgisonVal -> ThrowsError Double
Documentation
numericSglop :: (Integer -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal Source
floatSglop :: (Double -> Double) -> [EgisonVal] -> ThrowsError EgisonVal Source
floatNumSglop :: (Double -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal Source
numericBinop :: (Integer -> Integer -> Integer) -> [EgisonVal] -> ThrowsError EgisonVal Source
floatBinop :: (Double -> Double -> Double) -> [EgisonVal] -> ThrowsError EgisonVal Source
numBoolBinop :: (Integer -> Integer -> Bool) -> [EgisonVal] -> ThrowsError EgisonVal Source
floatBoolBinop :: (Double -> Double -> Bool) -> [EgisonVal] -> ThrowsError EgisonVal Source
floatFloor :: [EgisonVal] -> ThrowsError EgisonVal Source
floatCeiling :: [EgisonVal] -> ThrowsError EgisonVal Source
floatTruncate :: [EgisonVal] -> ThrowsError EgisonVal Source
floatRound :: [EgisonVal] -> ThrowsError EgisonVal Source
numExpt :: [EgisonVal] -> ThrowsError EgisonVal Source
numSqrt :: [EgisonVal] -> ThrowsError EgisonVal Source
numExp :: [EgisonVal] -> ThrowsError EgisonVal Source
numLog :: [EgisonVal] -> ThrowsError EgisonVal Source
unpackBool :: EgisonVal -> ThrowsError Bool Source
Convert a number to a string; radix is optional, defaults to base 10 numToString :: [EgisonVal] -> IOThrowsError EgisonVal numToString [(Number n), (Number radix)] = do case radix of 2 -> do -- Nice tip from StackOverflow question #1959715 liftIO $ stringToCharCollection $ showIntAtBase 2 intToDigit n "" 8 -> liftIO $ stringToCharCollection $ printf "%o" n 10 -> liftIO $ stringToCharCollection $ printf "%d" n 16 -> liftIO $ stringToCharCollection $ printf "%x" n _ -> throwError $ BadSpecialForm "Invalid radix value" $ Number radix
Convert a float to a string; radix is optional, defaults to base 10 floatToString :: [EgisonVal] -> IOThrowsError EgisonVal floatToString [(Float n)] = liftIO $ stringToCharCollection $ show n floatToString [x] = throwError $ TypeMismatch "number" x floatToString badArgList = throwError $ NumArgs 1 badArgList
Extract an integer from the given value, throwing a type error if the wrong type is passed.
unpackNum :: EgisonVal -> ThrowsError Integer Source
Extract an integer from the given value, throwing a type error if the wrong type is passed.
unpackFloat :: EgisonVal -> ThrowsError Double Source
Extract an double from the given value, throwing a type error if the wrong type is passed.