首页 > 解决方案 > 从 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

标签: functional-programmingmonadsghciidris

解决方案


文档

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

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


推荐阅读