KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I always run into the following error when trying to read a ByteString: Prelude.read: no parse Here's a sample of code that will cause this error to occur upon rendering in a browser: factSplice :: SnapletSplice App App factSplice = do mbstr <- getParam "input" -- returns user input as bytestring let str = maybe (error "splice") show mbstr let n = read str :: Int return [X.TextNode $ T.pack $ show $ product [1..n]] Or perhaps more simply: simple bs = read (show bs) :: Int For some reason, after show bs the resulting string includes quotes. So in order to get around the error I have to remove the quotes then read it. I use the following function copied from the internet to do so: sq :: String -> String sq s@[c] = s sq ('"':s) | last s == '"' = init s | otherwise = s sq ('\'':s) | last s == '\'' = init s | otherwise = s sq s = s Then simple bs = read (sq.show bs) :: Int works as expected. Why is this the case? What is the best way to convert a ByteString to an Int?
Tags (comma-separated)
Save Edits
Cancel