首页 > 解决方案 > Bad Let in Form 方案

问题描述

(define (prime max)
  (let ((a 2)))
  (if not(= modulo max 2) 0)
  ((+ a 1)
    prime(max))
  )

它告诉我错误的形式 (let ((a 2))) 但据我所知,语法和代码是正确的

标签: schemelisp

解决方案


不,这是不对的。letform 有这样的语法:(let binds body)你的绑定是((a 2)). 你的身体在哪里?你把它放在let表格之外。这引发了两个问题:let由于只有一个参数而不是两个参数而导致格式错误,并且a在它出现的位置未声明。(没有进入代码的逻辑,这也是不正确的,假设您正在尝试素性测试功能.)


推荐阅读