我正致力于在racket中创建一个哈希表,它将函数名与它们所代表的过程关联起来。到目前为止我已经
(定义*函数表*(make-散列))(定义(f-get键)(散列-引用*函数表*键))(定义(f-put!(散列设置!*函数表*键值);;然后用几个函数初始化它(每个函数(lambda (fn) (f-put )!fn (lambda (fn args) ((fn) args) (list abs +)
所以我想让它起作用,我可以打个电话
((f-get +) 12)
然后返回3,但是我现在得到的错误是:
应用程序:不是一个过程;期望一个可以应用于给定参数的过程:1参数.:无
我很确定问题在于我如何初始化表。检查石榴石,它的价值是程序,但我不知道他们做什么,我怀疑这不是我希望他们做的。
发布于 2014-11-09 00:24:31
您的哈希表应该是从符号'+到函数+的映射。您的代码似乎试图通过在哈希表中的函数而不是符号'+来查找函数。
使用:
(for-each f-put! '(abs +) (list abs +))然后用以下方法获得函数:
((f-get '+) 1 2)https://stackoverflow.com/questions/26823498
复制相似问题