How to force evaluation in Haskell?

后端 未结 2 1684
难免孤独
难免孤独 2020-12-08 14:30

I am relatively new to Haskell and I am trying to learn how different actions can be executed in sequence using the do notation. In particular, I am writing a program to ben

2条回答
  •  醉酒成梦
    2020-12-08 14:56

    I would use the language extension -XBangPatterns, I find that quite expressive in such situations. So you would have to say "let !r = foo inputList" as in:

    {-# LANGUAGE BangPatterns #-}
    import System.CPUTime
    
    benchmark :: [String] -> IO Integer
    benchmark inputList = do
                             start <- getCPUTime
                             let !r = foo inputList
                             end <- getCPUTime
                             return (end - start)
    

提交回复
热议问题