Does Haskell have a method for determining the number of CPU cores present on a machine at runtime?
Yes, there is such a method. Code from "Real World Haskell": http://book.realworldhaskell.org/read/concurrent-and-multicore-programming.html
import GHC.Conc (numCapabilities) main = putStrLn $ "number of cores: " ++ show numCapabilities