【发布时间】:2016-10-20 00:56:06
【问题描述】:
(define (real x) (car x))
(define (imag x) (cdr x))
(define (complex-sqrt x)
(define (first a b) (sqrt (/ (+ a
(sqrt (+
(* a a)
(* b b))))
2)))
(define (second a b) (sqrt (/ (+ (* -1 a)
(sqrt (+
(* a a)
(* b b))))
2)))
(cons (first (real x) (imag x)) (second (real x) (real y))))
(complex-sqrt '(2 3))
当它尝试评估(第一个 a b)和(第二个 a b)时,我不断收到一条错误消息,上面写着“* 违反合同:预期数字”。我不确定此信息是否相关,但输入将始终是 2 个数字的列表。
【问题讨论】:
-
您使用的是
#lang racket还是其中一种学生语言? -
我使用的是 R5RS 语言。
-
(2 3)等于(cons 2 (cons 3 null))。我认为您的意思是使用(cons 2 3)作为输入。 -
在您当前的代码中,'y' 未绑定。我认为'real y'应该是'imag x'
标签: compiler-errors scheme racket