Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

please document that nf is (contains) an IO action #274

Open
jwaldmann opened this issue Mar 26, 2023 · 0 comments
Open

please document that nf is (contains) an IO action #274

jwaldmann opened this issue Mar 26, 2023 · 0 comments

Comments

@jwaldmann
Copy link

(I am not sure about this but it is a source of confusion in #273 )

We have

nf :: NFData b => (a -> b) -> a -> Benchmarkable

and Benchmarkable is "A pure function or impure action that can be benchmarked." (says the haddock).

So what happens if I write this:

import Criterion.Main

main = defaultMain
  $ let b =  nf length [1 .. 10^7 :: Int ] in
  [ bench "1" b
  , bench "2" b
  , bench "3" b
  ]

I do get the same timings - the value is shared, but the value denotes the action that performs the evaluation. (I think.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant