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 の部分です。整数のリストを調べ、それぞれを 1 つずつ float に変換します。

整数のリストを浮動小数点数のリストに変換するより効率的な方法はありますか?

4

1 に答える 1

3

この場合の「効率的な方法」とはどういう意味ですか?

あなたがやろうとしているのは、に変換する[String]こと[Float]です。使えば問題ないと思いますread。本当に持っている場合は、タイプのインスタンスを取得するために[Int]使用できます。リスト内包表記の方が読みやすいので、リスト内包表記より も優先する必要があります。fromIntegralNummap

于 2012-11-10T18:19:59.310 に答える