标签: plai

二进制算术程序中的"应用程序:不是程序"

我有一个简单的Racket定义,用于将二进制数相乘.它使用经过充分测试的"addWithCarry"定义,该定义采用三个参数:两个列表和一个进位数,并返回二进制和.二进制数以相反的顺序表示为列表.

我使用调试器逐步完成了测试行,并正确地完成了递归.它每次在适当时缩小y列表时执行multBins,然后按预期执行addWithCarry函数.当它上升到堆栈时,它突然抛出一个异常"应用程序:不是一个过程,期望一个可以应用于参数的过程",参数为'(0 0 0 1 0 1 1),这是最高的值"x"加到了总数中.我知道当您尝试将函数的结果作为带参数的函数应用时,可能会发生此错误,但我在此处未看到此错误.看着调试器,一切看起来都很完美,直到最后.有任何想法吗?

(define (multBins x y)
  (cond
    ((null? y)       '() )
    ((= (first y) 0) ((multBins (cons 0 x) (rest y))))
    (#t              ((addWithCarry x (multBins (cons 0 x) (rest y)) 0)))))  
(test (multBins '(1 0 1 1)'(1 1 0 1))'(1 1 1 1 0 0 0 1))
Run Code Online (Sandbox Code Playgroud)

这是addWithCarry定义:

(define (addWithCarry x y carry)
  (cond
    ((and (null? x)(null? y)) (if (= carry 0) '() '(1)))
    ((null? x) (addWithCarry '(0) y carry))
    ((null? y) (addWithCarry x …
Run Code Online (Sandbox Code Playgroud)

recursion scheme racket plai

4
推荐指数
1
解决办法
530
查看次数

如何使用DrRacket 5.2.1在Emacs中编辑和运行PLAI代码

我正在学习PLAI,现在我已经在DrRacket(带#lang plai)中运行了第3章的代码,但我是DrRacket的新手.我可以仅在Emacs中编辑和运行代码吗?

scheme racket plai

2
推荐指数
1
解决办法
233
查看次数

标签 统计

plai ×2

racket ×2

scheme ×2

recursion ×1