首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将对输入到用于方案的方程中

将对输入到用于方案的方程中
EN

Stack Overflow用户
提问于 2015-04-27 08:27:19
回答 2查看 35关注 0票数 1

我正试着拿两双(a。b) '(c .d)并将它们输入到方程式中。

代码语言:javascript
运行
复制
(define dist
    (lambda (pr)
(sqrt (+ (expt (- (car pr) (car pr) 2)(expt (- (cdr pr) (cdr pr) 2)))

我尝试了这种方法和其他一些方法,但我只是得到了错误。

我的实际等式似乎适用于数字,但我不确定我应该如何输入两对,或者我甚至不确定我是否应该使用我拥有的等式。我担心我认为这一切都是错误的,我的书中没有提到如何处理两对,我的老师也不会回答。我很困惑,任何提示或解释都会很棒。

编辑:我应该提到,为了测试我的代码,我用数字代替了成对的字母,例如:

代码语言:javascript
运行
复制
 (dist '(2 . 5) '(3 . 1)) 

我试图让它变得通用,因为任何数字都必须能够与代码一起工作。很抱歉给你造成了混乱。

EN

回答 2

Stack Overflow用户

发布于 2015-04-27 09:14:50

示例过程:

代码语言:javascript
运行
复制
(lambda (a b)
  (+ a b))

这里的ab是两个参数。它们的名称在形参列表中声明,并由主体中的这些名称使用。ab可能是数字,只能通过它们在过程主体中的使用方式来查看,但是形参列表本身并没有说明任何有关类型的内容。它们可能是对,而+可能是词法绑定的过程,它做的事情与数字相加完全不同。

在您的过程中,您定义了一个绑定变量pr。从代码看,这似乎是一对,因为您同时对其应用了carcdr。如果需要添加另一个对,则必须使用您选择的名称(如pr,可能是was)将其添加到形参列表中,并在过程体中使用该名称。

您可以阅读有关lambda expressions in the R6RS standard格式的更多信息。

票数 0
EN

Stack Overflow用户

发布于 2015-04-28 14:07:13

您已经展示了一个接受两个参数的函数dist

代码语言:javascript
运行
复制
(dist '(2 . 5) '(3 . 1))

这样如何:

代码语言:javascript
运行
复制
(define dist 
  (lambda (arg1 arg2)
    (let ((x1 (car arg1))
          (y1 (cdr arg1))

          (x2 (car arg2))
          (y2 (cdr arg2)))

      (sqrt (+ (expt (- x2 x1) 2)
               (expt (- y2 y1) 2))))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29885311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档