gpt4 book ai didi

带有列表的方案函数

转载 作者:行者123 更新时间:2023-12-04 06:44:19 26 4
gpt4 key购买 nike

首先,我是 scheme 的初学者。这也是基于硬件的,所以我不是在寻找答案,而是在寻找对这里发生的事情的解释。开始了:

所以我有一个我需要实现的函数,给出了这么多:

(define gen-hash-division-method
(lambda (size)
...
))

我已经实现的另一个函数被定义为键并将一个词作为参数并计算一些值。它是正确的,所以我不会发布它,但作为示例 key('(w o r d)) => 130293。现在所有“gen-hash-division-method”应该做的只是根据参数获取 key 的模数,换句话说 h(k) = k modulus size

问题是,如果没有将 k 作为参数给出,我应该如何计算它。这就是“gen-hash-division-method”的使用方式:

(define hash-1 (gen-hash-division-method 701))

701 我假设是大小参数。为了测试它,它看起来像这样:

(hash-1 '(h e l l o))

这是我感到困惑的地方,我不知道它在这里做什么。那里给出了这个词,但我不明白我应该如何调用 key('(h e l l o)) 来让 k 实现 gen-hash-division-method(size) => k 模数大小

最佳答案

让我们看看。 gen-hash-division-method 根据size 参数返回键的模数,但创建键的字符稍后将作为另一个参数传递,在其他话:

(define gen-hash-division-method
(lambda (size)
(lambda (chars)
(modulo (key chars) size))))

这是正在发生的事情:

  • gen-hash-division-method 是一个函数,它在给定大小的情况下返回另一个专门用于计算键模大小的函数
  • 返回的函数接收一个字符列表作为参数
  • 一旦传递了一个字符列表,就会使用key 过程计算 key ,然后执行模运算,始终使用创建时传递的相同size功能

我们刚刚实现的是currying的例子:

currying is the technique of transforming a function that takes multiple arguments (or a tuple of arguments) in such a way that it can be called as a chain of functions, each with a single argument (partial application)

如您所见,它按预期工作:

; hash-1 calculates hashes modulo 701
(define hash-1 (gen-hash-division-method 701))

; in particular, here we find the hash modulo 701 for '(h e l l o)
(hash-1 '(h e l l o))

; any other list of chars we pass will be hashed modulo 701
(hash-1 '(f o o))

关于带有列表的方案函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029568/

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