|
|
|
|
|
by SEMW
3296 days ago
|
|
I haven't yet tried Idris (or even Haskell), so I could be misunderstanding, but surely in a pure language, a function with a type of String -> Int can't 'blow up', it can only output an Int? So if you want to tell the difference, you'd use something that outputs a (Maybe Int) rather than an Int, which'd be a wrapper around `cast` that does validation you want Looking at the interfaces tutorial[0], it gives an example of something similar: readNumber : IO (Maybe Nat)
readNumber = do
input <- getLine
if all isDigit (unpack input)
then pure (Just (cast input))
else pure Nothing
[0] http://docs.idris-lang.org/en/latest/tutorial/interfaces.htm... |
|