我正在尝试用Learning Haskell Data Analysis学习Haskell(我之前读过其他一些东西,例如Learn You a Haskell ......)。有一个列表可以解析和修改csv数据,这些数据与本书提出的方式不同,即。它通过一个错误。不幸的是,我不能很好地纠正上市。我不知何故得到了什么不起作用,但不知道正确的版本会是什么样子。我也没有真正找到使用hello.ts
函数的表达式示例,看看我是否可以从中获取正确的版本
either
将其加载到ghci时得到的错误消息是:
module LearningDataAnalysis02 where
import Data.List
import Data.Either
import Text.CSV
-- compute the average of List values
average' :: Fractional a => [a] -> a
average' xs = sum xs / genericLength xs
readColumn :: [String] -> [Double]
readColumn xs = map read xs
getColumnInCSV :: CSV -> String -> Either String Integer
getColumnInCSV csv columnName = case lookupResponse of
Nothing -> Left "The column does not exist in this csv file."
Just x -> Right (fromIntegral x)
where
lookupResponse = findIndex (== columnName) (head csv)
applyToColumnInCSV :: ([String] -> b) -> CSV -> String -> Either String b
applyToColumnInCSV func csv column = either
Left
Right . func . elements columnIndex
where
columnIndex = getColumnInCSV csv column
nfieldsInFile = length $ head csv
records = tail $ filter (\record -> nfieldsInFile == length record) csv
elements ci = map (\record -> genericIndex record ci) records
有没有人这么善良,可以向我解释我如何修改列表以使其发挥作用以及为什么它不像图书建议的那样工作?