我正在閱讀512^2空格分隔的雙打文本文件,通過將它們傳遞給標準輸入到我的Erlang程序中。在愛爾蘭,我的IO如何緩慢運行?
在Erlang中,這需要2m25s,在等價的Haskell程序中需要3s,所以我必須以某種方式違背Erlang的方式。
我是以一種愚蠢的方式使用Erlang的IO原語,還是我的程序有其他錯誤?
請注意,我不關心結果列表中的值的順序,所以沒有反向操作。
二郎:
-module(iotest).
-import(io).
-export([main/0]).
main() ->
Values = read(),
io:write(Values).
read() -> read([]).
read(Acc) ->
case io:fread("", "~f") of
{ok, Value} -> read([Value | Acc]);
eof -> Acc
end.
哈斯克爾:
module IOTest (
main
) where
main :: IO()
main = do
text <- getContents
let values = map read (words text) :: [Double]
putStrLn $ show values
return()
非常感謝您的幫助。
它也看起來像Erlang程序將生成相反的數字列表。 – augustss