はじめまして。
このリポジトリを見つけ、Haskellだけ妙に遅いのが気になり高速化してみようと思ったのですが、それ以前にわからないところもあり質問させてください。
mapM_ print $ filter (\i -> isMunchausen i i 0 cache) [0 .. 440000000]
なぜこれで順次数値が表示されるのでしょうか?
filterのイメージではTrueの要素だけか格納された[0,1,3435,438579088]というものがまず生成されて、その後いっぺんにprintされると思ったのですが。
{-# LANGUAGE Strict #-}
{-# LANGUAGE StrictData #-}
を有効にし、cacheをData.Vector.Unboxedにしてみたところ最初2分のものが1分くらいになったのですが、Goは8秒切り、Zigは4秒を切ります。
Haskellとはこのくらいの速度差があるものなのでしょうか?
よろしくお願いします。
このリポジトリを見つけ、Haskellだけ妙に遅いのが気になり高速化してみようと思ったのですが、それ以前にわからないところもあり質問させてください。
mapM_ print $ filter (\i -> isMunchausen i i 0 cache) [0 .. 440000000]
なぜこれで順次数値が表示されるのでしょうか?
filterのイメージではTrueの要素だけか格納された[0,1,3435,438579088]というものがまず生成されて、その後いっぺんにprintされると思ったのですが。
{-# LANGUAGE Strict #-}
{-# LANGUAGE StrictData #-}
を有効にし、cacheをData.Vector.Unboxedにしてみたところ最初2分のものが1分くらいになったのですが、Goは8秒切り、Zigは4秒を切ります。
Haskellとはこのくらいの速度差があるものなのでしょうか?
よろしくお願いします。