gpt4 book ai didi

function - 如何在 f# 中对任意函数进行计时

转载 作者:行者123 更新时间:2023-12-02 08:04:15 25 4
gpt4 key购买 nike

问题就在这里。我需要使用另一个函数对 f# 中的函数进行计时。我有这段代码

let time f a =
let start = System.DateTime.Now in
let res = (fun f a -> f(a)) in
let finish = System.DateTime.Now in
(res, finish - start)

我想称之为“

time ackermann (2,9);;

我有一个函数 ackermann,它接受元组 (s,n) 作为参数这可能从根本上是错误的,但我认为我离一个可能而且看起来有点像这样的解决方案已经不远了。

有什么建议吗?

哦顺便说一句。我收到的错误消息是:

stdin(19,1):错误 FS0030:值限制。值“it”已被推断为具有泛型类型 验证它:(('_a -> '_b) -> '_a -> '_b) * System.TimeSpan
将“it”定义为简单的数据术语,使其成为具有显式参数的函数,或者,如果您不希望它是通用的,请添加类型注释。

最佳答案

您至少有两个问题:

  1. 尝试let res = f a。您已经在范围内有了值 fa,但您当前将 res 定义为一个函数,该函数采用新的 f 并将其应用于新的 a
  2. 不要使用DateTime(它适合表示日期和时间,但不适合表示较短的持续时间)。相反,您应该使用 System.Diagnostics.Stopwatch

关于function - 如何在 f# 中对任意函数进行计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com