如何编写这个 Lisp/Scheme 代码?

发布于 2024-07-08 10:58:51 字数 56 浏览 2 评论 0原文

一种 lambda 表达式,它接受一个函数(只有一个参数)和一个数字,并将该函数应用于两倍的数字。

A lambda expression which takes a function (of one argument) and a number, and applies the function to twice the number.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

本王不退位尔等都是臣 2024-07-15 10:58:51

将函数应用于两倍的数字:

(lambda (f x) (f (* 2 x)))

将函数应用于两倍的数字(这可能是您想要问的):

(lambda (f x) (f (f x)))

Applying the function to twice the number:

(lambda (f x) (f (* 2 x)))

Applying the function to the number twice (which is what you may have intended to ask):

(lambda (f x) (f (f x)))
迷爱 2024-07-15 10:58:51

格雷格的答案是正确的,但您可能会考虑如何分解这个问题来自己找到答案。 这是一种方法:

; A lambda expression
;(lambda () )

; which takes a function (of one argument) and a number
;(lambda (fun num) )

; and applies the function
;(lambda (fun num) (fun num))

; to twice the number
;(lambda (fun num) (fun (* 2 num)))

((lambda (fun num) (fun (* 2 num))) + 12)

Greg's answer is correct, but you might think about how you might break apart this problem to find the answer yourself. Here is one approach:

; A lambda expression
;(lambda () )

; which takes a function (of one argument) and a number
;(lambda (fun num) )

; and applies the function
;(lambda (fun num) (fun num))

; to twice the number
;(lambda (fun num) (fun (* 2 num)))

((lambda (fun num) (fun (* 2 num))) + 12)
擦肩而过的背影 2024-07-15 10:58:51

这是另一种方法:

编写合同、目的和标题:

;; apply-double : function -> number -> any
;; to apply a given function to double a given number
(define (apply-double fun num) ...)

编写一些测试:

(= (apply-double identity 10) 20)
(= (apply-double - 15) -30)
(= (apply-double / 7) 1/14)

定义函数:

(define (apply-double fun num) 
  (fun (* 2 num)))

这是此处配方的缩写: http://www.htdp.org/2003-09-26/Book/

Here is another way to approach it:

Write a Contract, Purpose, and Header:

;; apply-double : function -> number -> any
;; to apply a given function to double a given number
(define (apply-double fun num) ...)

Write some Tests:

(= (apply-double identity 10) 20)
(= (apply-double - 15) -30)
(= (apply-double / 7) 1/14)

Define the function:

(define (apply-double fun num) 
  (fun (* 2 num)))

This is an abbreviation of the recipe here: http://www.htdp.org/2003-09-26/Book/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文