我主要有几个输出信息的功能。
我需要测量他们的执行时间。
目前它是这样完成的:
start <- getCurrentTime
putStrLn $ show $ findNthMinLinear (getTestArrayOfLength (read arrlength :: Int)) 4
stop <- getCurrentTime
print $ diffUTCTime stop start
我想将每个函数包装在一个函数中 1. 记住时间 2. 评估函数 3. 记住时间 4. 打印两个记住时间之间的差异
问题是我不知道如何在不先评估它的情况下传递一个函数。
我的猜测是,例如,如果我写 (<5),即我创建一个返回函数的函数,那么在我传递最终参数之前不会做任何实际工作我猜?然后我可以写
printAndMeasure :: (a -> IO()) -> IO ()
...
printAndMeasure \x -> (getTestArrayOfLength (read arrlength :: Int)) 4
但这是一个草率的解决方案,因为我真的不需要这个 x 除了阻止函数被执行。