用Haskell有效地将[整数]转换为[float]



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

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部分。它通过整数列表梳理,一对一将每个整数转换为浮点。

是否有一种更有效的方法将整数列表转换为浮子列表?

我不清楚这种情况的'有效方法是什么意思?

您要做的是将[String]转换为[Float]。我认为使用read会很好。如果您确实有[Int],则可以使用fromIntegral获取Num类型的任何实例。只是要点,您应该更喜欢map而不是列表理解,因为它更可读。

最新更新