1

这是我正在阅读的文本文件中的条目的简化示例——

Set1 1 2 3
Set2 6 7 8

我正在尝试编写一个可以将上述字符串转换为元组列表的函数——

[("Set1", [1.0, 2.0, 3.0]), ("Set2", [6.0, 7.0, 8.0])]

这是我写的函数——

parse_input :: String -> [(String, [Float])]
parse_input x = [ (head y, int2float (tail y)) | y <- splitinput ]
    where
        int2float x = [ read a::Float | a <- x ]
        splitinput = [ words a | a <- lines x ]

这段代码最困扰我的是 int2float 部分。它梳理整数列表,并将每个整数逐一转换为浮点数。

有没有更有效的方法将整数列表转换为浮点数列表?

4

1 回答 1

3

对于这种情况,我不清楚您所说的“有效方式”是什么意思?

您要做的是转换[String][Float]. 我认为使用read会做得很好。如果你真的有[Int]那么你可以fromIntegral用来获取任何Num类型的实例。只是指出您应该更喜欢map而不是列表理解,因为它更具可读性。

于 2012-11-10T18:19:59.310 回答