而下面的代码:
postImportR = do
fi <- lookupFiles "file"
fc <- lift $ fileSource (fi !! 0) $$ consume
似乎可以工作(至少我可以“liftIO $ print fc”),将其拆分为一个迭代函数不会:
process :: [FileInfo] -> [String]
process [] = []
process (f:r) = do
fn <- fileName f
fc <- lift $ fileSource f $$ consume
([fn] : (process r))
postImportR = do
fi <- lookupFiles "file"
process fi
甚至使用 lambda 函数:
files <- L.map (\f -> (fileName f, lift $ fileSource f $$ consume)) fi
在处理程序中,它给了我一个我不明白的类型错误。
我的错在哪里——喜欢从文件的行中生成用于数据库导入的内容(当然,还要学习更多 Haskell)。