Functional programming 无法使Y combinator的实现工作

Functional programming 无法使Y combinator的实现工作,functional-programming,scheme,racket,combinators,y-combinator,Functional Programming,Scheme,Racket,Combinators,Y Combinator,代码如下: 当我运行它时: > (poorY '(9 7 8)) . . application: not a procedure; expected a procedure that can be applied to arguments given: '(#<procedure>) arguments...: '(#<procedure>) 屏幕截图如下所示: 我用DrRacket作为repl。 代码怎么了?长度周围应该有括号: 您也可以尝试输

代码如下:

当我运行它时:

> (poorY '(9 7 8))
. . application: not a procedure;
 expected a procedure that can be applied to arguments
  given: '(#<procedure>)
  arguments...:
   '(#<procedure>)
屏幕截图如下所示:

我用DrRacket作为repl。
代码怎么了?

长度周围应该有括号:

您也可以尝试输入相同的长lambda表达式,而不是两次

(define poorY
  ((lambda (f) (f f))
   (lambda (length)
     (lambda (ls)
       (cond
         [(null? ls) 0]
         [else (add1 ((length length) (cdr ls)))])))))

另请参见。

长度周围应有括号:

您也可以尝试输入相同的长lambda表达式,而不是两次

(define poorY
  ((lambda (f) (f f))
   (lambda (length)
     (lambda (ls)
       (cond
         [(null? ls) 0]
         [else (add1 ((length length) (cdr ls)))])))))
另见

(define poorY
  ((lambda (f) (f f))
   (lambda (length)
     (lambda (ls)
       (cond
         [(null? ls) 0]
         [else (add1 ((length length) (cdr ls)))])))))