对于真正使用方案的人来说,简单的问题,简单的答案。如何确定变量是否是字母表中的字母?
我假设它是这样的(字母?x),其中x是某种不定类型。谁能告诉我可以使用什么布尔函数?
编辑:
我怎样才能做出看起来像这样的东西:(somFunction-isALetter?a)返回:#t
其中 a 不是变量。
我试图回答的问题:
13195 的质因数是 5、7、13 和 29。数字 600851475143 的最大质因数是多少?
我哪里错了?我的盛年?test 似乎是问题所在,但它在相对较小的数字上工作得很好。但总理?测试给出了较大数字的错误答案。有没有更简单的方法来解决这个问题?
(define b 3)
(define z 0)
(define divides?
(lambda (a b)
(= (remainder a b) 0)))
(define (prime? n)
(cond
((or (= n 1) (= n 0)) false)
((even? n) false)
((= n 2) true)
((= n b) true)
((divides? n b) false)
(else (and (set! b (+ b 1)) (prime? n)))))
;Largest Prime Factor Test
(define (LPF x)
(cond
((divides? 600851475143 x)
(cond
((prime? x)
(cond
((> x z) …Run Code Online (Sandbox Code Playgroud) (define generalized-triangular\n (lambda (input n)\n (if (= n 1)\n 1\n (+ (input n) (generalized-triangular (- n 1))))))\nRun Code Online (Sandbox Code Playgroud)\n\n该程序旨在以数字和函数作为输入并执行以下操作。
\n\nf(1) + f(2) + f(3)+ \xe2\x80\xa6 + f(N).\nRun Code Online (Sandbox Code Playgroud)\n\n输入示例如下:
\n\n(generalized-triangular square 3)\nRun Code Online (Sandbox Code Playgroud)\n\n错误消息:
\n\n(define generalized-triangular\n (lambda (input n)\n (if (= n 1)\n 1\n (+ (input n) (generalized-triangular (- n 1))))))\nRun Code Online (Sandbox Code Playgroud)\n 当我尝试执行这段代码时:
\n\n((lambda (a) (cons (quote a) a)) \xe2\x80\x99(d a b))\nRun Code Online (Sandbox Code Playgroud)\n\n我收到错误:
\n\n\n\n\n\xe2\x80\x99:模块中的未绑定标识符:\xe2\x80\x99
\n
有人可以帮我解释一下吗?
\n所以从我个人的研究来看,闭包/柯里化似乎或多或少是完全相同的东西,这显然不可能是正确的。那么区别在哪里呢?
所以这里有一个 Racket 中的闭包示例:
(define (make-an-adder x)
(lambda (y)
(+ y x)))
(define add3 (make-an-adder 3))
(add3 5)
Run Code Online (Sandbox Code Playgroud)
会回馈
8
Run Code Online (Sandbox Code Playgroud)
那么柯里化的区别在哪里呢?因为如果我查找文档和其他示例,它们似乎与我为关闭所展示的完全相同?
提前谢谢大家!
我试图将一个 S 表达式列表转换为一个简单的原子列表,类似于The Little Schemer一书中的问题。
我的代码是(在 Dr.Racket 中输入):
> (define lat '((coffee) cup ((tea) cup) (and (hick)) cup))
> (define f
(lambda (lat)
(cond
((null? lat) (quote ()))
((atom? (car lat)) (cons (car lat) (f (cdr lat))))
(else (cons (f (car lat)) (f (cdr lat)))))))
> (f lat)
'((coffee) cup ((tea) cup) (and (hick)) cup)
Run Code Online (Sandbox Code Playgroud)
上面的代码返回与输入列表相同的列表。我尽力了,但得到了不同的答案,例如:
(coffee)
(cup . cup)
( () (()) (()) )
Run Code Online (Sandbox Code Playgroud)
用于程序中的各种修改。
我想知道,我们能不能得到答案:
'(coffee cup tea cup and hick cup)
Run Code Online (Sandbox Code Playgroud)
给予
'((coffee) …Run Code Online (Sandbox Code Playgroud) 我一直在研究一些清晰的东西,但在某些时候,我无法理解。
所以我知道这张图片代表(a b c x d):
但是,我没有得到的是这个会发生什么:
既然有一个什么都没有,就指向了两个东西,bx和da有两种方式的括号怎么写
我会写它,(c((b(x))(d(a))))但我不太确定。
感谢您的回答,我很感激;
假设我有一个列表,但我想将其转换为values. 例如:
(define (f mylist)
(values ...)) ; <- What do I write here?
Run Code Online (Sandbox Code Playgroud)
如果我打电话(f '(1 2 3)),我希望得到与(values 1 2 3). 我怎样才能做到这一点?
我试图理解用 python 代码编写的方案过程:
def callcc(proc):
"Call proc with current continuation; escape only"
ball = RuntimeWarning("Sorry, can't continue this continuation any longer.")
def throw(retval): ball.retval = retval; raise ball
try:
return proc(throw)
except RuntimeWarning as w:
if w is ball: return ball.retval
else: raise w
Run Code Online (Sandbox Code Playgroud)
它来自本教程:http : //norvig.com/lispy2.html。
以上是如何工作的?是什么ball意思,为什么 a proc(edure?) 被称为 athrow作为其参数值?评论“仅转义”是什么意思?
顺便说一句,这是我目前(可能是被误导的)对适用于 python 的延续的理解,这类似于传递一个带产量的函数:
def c(func, *args, **kwargs):
# func must be a coroutine
return func(*args, **kwargs)
def inc(x=0):
while True:
yield …Run Code Online (Sandbox Code Playgroud)