标签: scheme

Racket 中的 RESTful Web 服务

有没有办法在方案/球拍中使用网络服务来托管列表

scheme web-services racket

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

如何判断变量是否是Scheme中的字母?

对于真正使用方案的人来说,简单的问题,简单的答案。如何确定变量是否是字母表中的字母?

我假设它是这样的(字母?x),其中x是某种不定类型。谁能告诉我可以使用什么布尔函数?

编辑:

我怎样才能做出看起来像这样的东西:(somFunction-isALetter?a)返回:#t

其中 a 不是变量。

scheme racket

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

球拍编程。我哪里错了?

我试图回答的问题:
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)

scheme primes prime-factoring racket

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

if:语法错误(方案编程)

(define generalized-triangular\n  (lambda (input n)\n    (if (= n 1)\n        1\n        (+ (input n) (generalized-triangular (- n 1))))))\n
Run Code Online (Sandbox Code Playgroud)\n\n

该程序旨在以数字和函数作为输入并执行以下操作。

\n\n
f(1) + f(2) + f(3)+ \xe2\x80\xa6 + f(N).\n
Run Code Online (Sandbox Code Playgroud)\n\n

输入示例如下:

\n\n
(generalized-triangular square 3)\n
Run 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))))))\n
Run Code Online (Sandbox Code Playgroud)\n

lisp scheme racket

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

未绑定标识符“'”

当我尝试执行这段代码时:

\n\n
((lambda (a) (cons (quote a) a)) \xe2\x80\x99(d a b))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到错误:

\n\n
\n

\xe2\x80\x99:模块中的未绑定标识符:\xe2\x80\x99

\n
\n\n

有人可以帮我解释一下吗?

\n

scheme racket

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

球拍-封闭/咖喱,区别在哪里?

所以从我个人的研究来看,闭包/柯里化似乎或多或少是完全相同的东西,这显然不可能是正确的。那么区别在哪里呢?

所以这里有一个 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)

那么柯里化的区别在哪里呢?因为如果我查找文档和其他示例,它们似乎与我为关闭所展示的完全相同?

提前谢谢大家!

scheme closures functional-programming currying racket

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

方案:是否可以将 S 表达式列表转换为原子列表?

我试图将一个 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)

lisp recursion scheme flatten the-little-schemer

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

如何将框表示转换为括号表示

我一直在研究一些清晰的东西,但在某些时候,我无法理解。

所以我知道这张图片代表(a b c x d)

在此处输入图片说明

但是,我没有得到的是这个会发生什么:

在此处输入图片说明

既然有一个什么都没有,就指向了两个东西,bx和da有两种方式的括号怎么写

我会写它,(c((b(x))(d(a))))但我不太确定。

感谢您的回答,我很感激;

lisp scheme common-lisp

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

如何将列表转换为多个返回值?

假设我有一个列表,但我想将其转换为values. 例如:

(define (f mylist)
  (values ...))  ; <- What do I write here?
Run Code Online (Sandbox Code Playgroud)

如果我打电话(f '(1 2 3)),我希望得到与(values 1 2 3). 我怎样才能做到这一点?

scheme racket

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

理解 call-with-continuation 的实现

我试图理解用 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)

lisp python scheme continuations callcc

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