したがって、次のような Haskell プログラムがあります。
main = do
secondData <- loadSecondBars "output.data"
putStrLn $ "Generated Second Data " ++ (show $ length secondData)
let tenMinBars = secondData `seq` generateBars (barSize featureSet) secondData
putStrLn $ "Generated Ten Minute Bars " ++ (show $ length tenMinBars)
let combinedData = seq tenMinBars sortBars (tenMinBars ++ secondData)
putStrLn $ "Generated Combined" ++ (show $ length combinedData)
let completedOrderManager = evalState (runBar combinedData) startState
putStrLn "Ran Algo"
これを行うと、2 番目のデータをロードするのに約 8 秒かかり、残りの機能を実行するのに約 3 秒かかります。
ただし、ショーの長さのデータを削除すると、点滅します
"Generated Second Data"
"Generated Ten Minute Bars"
"Generated Combined"
"Ran Algo"
次に、すべての実際の機能が実行されるまで、少し一時停止します。
そこに seq を入れることで、遅延評価を防いだことが私の理解でした。私はそれらを間違って使用していますか?