方案高阶函数

0 lisp hash scheme

鉴于函数的骨架:

(define gen-hash-division-method (lambda (size)))
Run Code Online (Sandbox Code Playgroud)

以及:

(define hash-1 (gen-hash-division-method 701))
Run Code Online (Sandbox Code Playgroud)

我编码的内容:

(define gen-hash-division-method 
  (lambda (size)
   (lambda (w) 
    (modulo key(flip(w)) size))))
Run Code Online (Sandbox Code Playgroud)

key(flip(w))获取一个列表w并返回一个整数.

并致电:

(hash-1 '(h e l l o))
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

procedure application: expected procedure, given: (h e l l o) (no arguments) 
Run Code Online (Sandbox Code Playgroud)

Dan*_*zer 6

您收到错误,因为在Scheme中(w)期望w是一个函数.但这w只是一个符号列表.

在你的情况下,你key(flip(w))在Scheme土地上没有意义.

一切都被括号括起来

你要 (key (flip w))

记住lisp口头禅: (function args ...)