从 Idris 中的文件中读取

Reading from a file in Idris

在 Idris 中阅读文件的首选惯用方式是什么?例如,我正在尝试从文件映射中读取数字,将其映射到 Int 值并对所有内容求和。输入文件

5 3 4 6 12

import Data.String

myCast: Maybe Integer -> Integer
myCast Nothing = 0
myCast (Just val) = val


sumNums: String -> Integer
sumNums s = sum (map myCast (map parseInteger (words s)))

我最感兴趣的是阅读部分

main : IO ()
main = do
  (Right content) <- readFile "input.txt" | (Left err) => printLn err
  printLn (sumNums content)

这里Either/Maybe的正确处理方法是什么?

来自the book and the docs

main : IO ()
main = do file <- readFile "input.txt"
          case file of
               Right content => printLn (sumNums content)
               Left err => printLn err

<- 允许我们直接作用于 IO (Either FileError String)Either。然后我们对可能的值进行大小写拆分,在每种情况下打印它们