gpt4 book ai didi

haskell - 神秘单词 ("LPS") 出现在 Haskell 输出列表中

转载 作者:行者123 更新时间:2023-12-02 16:56:03 25 4
gpt4 key购买 nike

我是 Haskell 新手,正在尝试摆弄一些我通常在现实世界中遇到的测试用例。假设我有一个文本文件“foo.txt”,其中包含以下内容:

45.4 34.3 377.8
33.2 98.4 456.7
99.1 44.2 395.3

我正在尝试生成输出

[[45.4,34.3,377.8],[33.2,98.4,456.7],[99.1,44.2,395.3]]

我的代码如下,但我在输出中收到一些伪造的“LPS”...不确定它代表什么。

import qualified Data.ByteString.Lazy.Char8 as BStr
import qualified Data.Map as Map

readDatafile = (map (BStr.words) . BStr.lines)

testFunc path = do
contents <- BStr.readFile path
print (readDatafile contents)

当使用 testFunc "foo.txt" 调用时,输出为

[[LPS ["45.4"],LPS ["34.3"],LPS ["377.8"]],[LPS ["33.2"],LPS ["98.4"],LPS ["456.7"]],[LPS ["99.1"],LPS ["44.2"],LPS ["395.3"]]]

感谢任何帮助!谢谢。 PS:使用ByteString,因为这将在将来用于海量文件。

编辑:

我也很困惑为什么输出列表按上面的方式分组(每个数字都在 [] 中绑定(bind)),而在 ghci 中,下面的行给出了不同的排列。

*Main> (map words . lines) "45.4 34.3 377.8\n33.2 98.4 456.7\n99.1 44.2 395.3"
[["45.4","34.3","377.8"],["33.2","98.4","456.7"],["99.1","44.2","395.3"]]

最佳答案

您所看到的确实是一个构造函数。当你读取文件时,结果当然是一个字节串列表的列表,但你想要的是一个 float 列表的列表。

你可以做什么:

readDatafile :: BStr.ByteString -> [[Float]]
readDatafile = (map ((map (read . BStr.unpack)) . BStr.words)) . BStr.lines

这将解压字节字符串(即将其转换为字符串)。读取将字符串转换为 float 。

不确定这里使用字节串是否有助于你的性能。

关于haskell - 神秘单词 ("LPS") 出现在 Haskell 输出列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com