标签: racket

PLT方案中的时间码

我想看一个函数运行多长时间.在PLT-Scheme中最简单的方法是什么?理想情况下,我希望能够做到这样的事情:

> (define (loopy times)
  (if (zero? times)
      0
      (loopy (sub1 times)))) 
> (loopy 5000000)
0                      ;(after about a second)
> (timed (loopy 5000000))
Took: 0.93 seconds
0
> 
Run Code Online (Sandbox Code Playgroud)

这不要紧,如果我不得不使用一些其他类似语法(timed loopy 5000000)或者(timed '(loopy 5000000)),或者如果它返回一个缺点或东西所花费的时间.

time scheme timing racket

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

方案:如何将带有cons的列表更改为向量?

如何更改用cons向量制作的列表?

((p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p)
 (p b p b p b p b)
 (b p b p b p b p))
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

(define b "black")
(define w "white")

(define (board)
  (letrec ((ti
            (lambda (x) …

scheme racket

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

在Racket中c(a | d)+ r宏

我想知道是否可以在Racket中编写一个可以转换每种形状的宏(c(a | d)+ r xs),其中c(a | d)+ r是匹配car,cdr,caar的正则表达式,干部,......等,先进入相应的组成和休息.

例如,这个宏应该采用(caadr'(1 2 3 4 5))并将其转换为(first(first(rest'(1 2 3 4 5)))).

沉(Mark Tarver的新编程语言)中有类似的东西:https://groups.google.com/group/qilang/browse_thread/thread/131eda1cf60d9094?hl = en

lisp macros cons racket

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

LISP中的列表评估(缺点的奇怪行为)

我目前正在玩LISP.一切都很好,但我无法理解以下问题.

我有这个追加操作:

(define (append l1 l2)
   (if (eq? l1 null)
      l2
      (cons (first l1)
            (myappend (rest l1) l2))))
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

(myappend (cons (cons 1 2) null) '(4 5))
Run Code Online (Sandbox Code Playgroud)

Racket的结果 是:

 '((1 . 2) 4 5)
Run Code Online (Sandbox Code Playgroud)

但为什么?在我的观点中,它应该是'(1 2 4 5),因为cons返回一个列表,myappends附加两个列表.有谁能够帮我?LISP在做什么?

lisp scheme list cons racket

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

在计划中折叠权利

我正在使用DrRacket作为方案编译器.当我尝试使用fold-right函数时,我得到了"fold-right:模块中的未绑定标识符:fold-right".在调用此函数之前是否需要包含一些库?

谢谢!

scheme module racket

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

SICP中的一个例子

这是SICP中的一个示例,我输入它但是有错误.

(define (sum term a next b)
  (if (> a b)
      0
      (+ (term a)
         (sum term (next a) next b))))
Run Code Online (Sandbox Code Playgroud)

这是错误:

函数调用:期望一个函数在打开括号后,但找到一个变量

lisp scheme sicp racket

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

add1函数从scheme到R5RS

我写了一些代码,但它没有用,因为add1我在Scheme中使用的函数不适用于R5RS.什么可以取代add1R5RS?

scheme racket r5rs

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

应用逻辑和

我有一个表达式:例如(map some-proc some-list) ,评估为'(#f #f #f).

我想检查此列表中的所有布尔值是否都为真.然而, (and '(#f #f #f))回归'(#f #f #f),而我留意#f.

现在,如果我(apply and '(#f #f #f)),我得到错误: and: bad syntax in: and在DrRacket环境中.这很令人困惑,因为Racket Reference提供的示例(apply + '(1 2 3))似乎与我的问题完全相同.

我做错了什么以及如何让我#f离开'(#f #f #f)

boolean logical-operators racket

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

为什么"和"和"或"在收到列表后会提供这些结果?

我正在使用Racket和Dr. Racket进行教育.

在变量"x"和"y"的以下定义之后:

(define x (list 1 2 3))
(define y (list 4 5 6))
Run Code Online (Sandbox Code Playgroud)

我决定使用这些变量创建3个不同的列表.

第一:

(append x y)

>> '(1 2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

第二:

(cons x y)

>> '((1 2 3) 4 5 6)
Run Code Online (Sandbox Code Playgroud)

第三:

(list x y)

>> ((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

之后,我决定在三个列表中使用布尔运算符"and"和"or".令我感到惊讶的是输出.为什么会这样?为什么"或"和"和"选择其中一个列表?这个决定背后的比例是多少?

(and (append x y) (cons x y) (list x y))

>> '((1 2 3) (4 5 6))

(or (append x y) (cons x y) (list x y))

>> '(1 2 …
Run Code Online (Sandbox Code Playgroud)

lisp functional-programming list sicp racket

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

折叠和折叠如何工作,在一个例子中分解?

好的,我是scheme/racket/lisp的新手.我在练创造我自己的功能,语法和递归,所以我想我自己foldlfoldr功能是做什么的预定义的版本做.我不能这样做,因为我只是不明白这些功能是如何工作的.我在这里看到过类似的问题,但我仍然没有得到它.细分的一些例子会有所帮助!这是我的(不正确的)过程:

(foldl - 0 '(1 2 3 4))我这样做0 -(4-3-2-1),得到2,这是正确的答案

(foldl - 0 '(4 3 2 1))我做到了0-(1-2-3-4)8但应该是-2.

(foldr - 0 '(1 2 3 4))我这样做0-(1-2-3-4)又得到了8,但它应该是-2.

(foldr - 0 '(4 3 2 1))我这样做0-(4-3-2-1),得到2,这是正确的答案.

我究竟做错了什么?

lisp scheme fold racket

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