标签: racket

如何在没有空格的方案中使用连接

我在Scheme中连接和空格有问题.命令的结果:

(append '(%procedure:) (list '+) '(%))**     //with spaces
Run Code Online (Sandbox Code Playgroud)

是:

%procedure: + %      //without spaces
Run Code Online (Sandbox Code Playgroud)

如何在列表之间没有空格的情况下生成相同的结果,结果将是:

%procedure:+%
Run Code Online (Sandbox Code Playgroud)

scheme concatenation append racket

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

球拍,列表和球拍

我有以下代码及其评论作为评论:

(require scheme/mpair)

(list)                   ;; '()
(mlist)                  ;; '()

(cons 'un (list))        ;; '(un)
(list 'un (list))        ;; '(un ())

(mcons 'un (mlist))      ;; (mcons 'un '())
(mlist 'un (mlist))      ;; (mcons 'un (mcons '() '()))
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么第3个表达式不返回'(),而不是'(un . ())

  2. 为什么不将第5个表达式和第6个表达式返回相同的东西?

scheme racket

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

截断没有在DrRacket中定义

我试图truncate在方案中使用该函数,DrRacket继续发出此消息

ProblemA.rkt:27:46: truncate: this function is not defined in: truncate
Run Code Online (Sandbox Code Playgroud)

是否有导入或我可以添加的内容,以便编译器可以找到该库truncate

基本上我想做整数除法的方案,以便98/10 = 9代替9.8,但truncate功能不工作.

scheme truncate integer-division racket

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

试图理解为什么DrRacket突出了我的一些cond条款

第二版" 如何设计程序"中的练习42 解释了DrRacket突出显示了cond下面代码中的最后两个子句,因为测试用例并未涵盖所有可能的情况.

; TrafficLight -> TrafficLight
; given state s, determine the next state of the traffic light

(check-expect (traffic-light-next "red") "green")

(define (traffic-light-next s)
  (cond
    [(string=? "red" s) "green"]
    [(string=? "green" s) "yellow"]
    [(string=? "yellow" s) "red"]))
Run Code Online (Sandbox Code Playgroud)

我的理解是else最后的一个条款应该涵盖其余的案例,所以我尝试替换最后的表达式:

(define (traffic-light-next s)
  (cond
    [(string=? "red" s) "green"]
    [(string=? "green" s) "yellow"]
    [(string=? "yellow" s) "red"]
    [else "green"]))
Run Code Online (Sandbox Code Playgroud)

这并不能解决突出问题.这里发生了什么?

racket

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

[S:N]的宏在Racket的范围内

如何创建宏以使S:N或[S:N]返回以S开头并以N结尾的数字范围(步骤1).基本上,它应该能够用它来代替"范围内".我尝试创建类似于Curly bracket {}的东西来替换Racket中的'begin'但不能.

编辑:我尝试按照@soegaard的建议:

我-top.rkt:

#lang racket
(define-syntax-rule (my-top S:N)
    (range S N) )

(provide (rename-out [my-top #%top]))
Run Code Online (Sandbox Code Playgroud)

test.rkt:

#lang racket
 (require "my-top.rkt")

 (1:42)
Run Code Online (Sandbox Code Playgroud)

但它没有运行.错误是:

 #%top: use does not match pattern: (#%top S:N) in: (#%top . 1:42)
Run Code Online (Sandbox Code Playgroud)

[1:42]和1:42也行不通.

scheme racket

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

如何将函数应用于方案或球拍中的每个子列表?

如何获得每个子列表的产品?尝试:

(apply map * '((1 2) (3 4)))
Run Code Online (Sandbox Code Playgroud)

但它返回:'(3 8),而它应该返回'(2 12)

scheme functional-programming racket

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

Racket中的随机数

我正在尝试生成从0到1的随机数,包括Racket中的0和1边框.直到现在我还没有找到解决方案.有一个很好的方式吗?

random functional-programming racket

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

iracket中有第一个和休息功能吗?

我刚刚设置了iracket.但有些功能似乎不起作用.

(define (f z) (first (rest z)))
(f '(1 2 3))
first: undefined;
 cannot reference an identifier before its definition
  in module: top-level
  internal name: first
  context...:
Run Code Online (Sandbox Code Playgroud)

我想知道iracket中有第一个和休息功能吗?

racket jupyter-notebook

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

检查和比较两个球拍合约?

有没有办法比较它们?例如,这不起作用:

(equal? (flat-contract integer?) (flat-contract integer?))
Run Code Online (Sandbox Code Playgroud)

racket

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

foldr和Scheme中的apply有什么区别?

编程语言:Scheme / DrRacket

我发现foldr和之间的用法没有区别apply

谁能解释他们的不同之处?据我所知,使用文件夹可以实现与应用相同的功能。谢谢!

lisp scheme racket

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