如何解决方案编程中不能定义这样的函数
为什么我总是收到这个错误???
;不能定义名称;已经免费:ratio 代码
(define (min-ratio list) ;;Pivot row
(let ((r-list (ratio list)))
(last-element (cons 0 (iter 1 (car r-list) (r-list)))))
(define (ratio list)
(if (null? (cdr list)) '()
(let ((row (car list)))
(cons (/ (last-element row) (list-ref row pivot-column))
(ratio (cdr list))))))
(define (iter position value list)
(if (null? (cdr list)) '()
(if (negative? value)
(iter (+ position 1) (cadr list) (cdr list))
(if (or (negative? (cadr list)) (<= vlaue (cadr list)))
(iter (+ position 1) value (cdr list))
(cons position (iter (+ position 1) (cadr list) (cdr list))))))))
只有“ratio”函数可以正常工作,“iter”函数也可以正常工作,但 min-ratio 函数不行。 我收到错误,无法定义名称、比例,已经免费。
解决方法
get()
在这里,您将 (let ((r-list (ratio list))) ...
与一些上定义(可能是原始/库定义)联系起来。如果实现没有发现它被定义,它可以被标记为ratio
并放在全局范围内的某个地方,希望你以后定义它(这是实现定义的行为)。
接下来,您在 free
的范围内定义 ratio
,您已经在其中引用了它,并且系统将其绑定标记为 let
。
free
当您在作用域内使用 (define (ratio list)...
时,这是实现定义的行为。
您应该决定是否包含来自 define
的 ratio
,或者您想定义它,如果是,请将 let
放在 let 之上,或者您可以使用类似 {{ 1}}。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。