标签: scheme

Scheme中类型的精确术语

我正在寻找关于Scheme类型的标准文档.例如,As类型不需要在程序中明确指定,我不知道它是boolboolean; LISTLISTE; intNat; List[]还是List[alpha]......

另一个小问题是如何定义"原子表达".例如,是'(1 2 3)一个原子表达式?

lisp scheme types

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

什么$后跟一个数字(例如1美元,3美元)的计划呢?

我正在分析代码,我看到了这一点

[(exp + exp) (+ $1 $3)]
Run Code Online (Sandbox Code Playgroud)

现在我想知道这是做什么的?是否需要该列表的第一个和第三个元素?那个设置在左侧甚至被认为是一个列表?我正在学习这门语言,但我已经度过了非常艰难的时光,所以你们一直都是最好的帮助.谢谢!

scheme racket

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

如何在Scheme函数中声明一个列表?

我想在scheme函数中声明一个空列表.为了实现这一点,我使用let.我知道let的结构

(let (name1 value1) (name2 value2)...)
Run Code Online (Sandbox Code Playgroud)

但是当我将它应用到我的函数中时

(let (new-list '())) 
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,上面写着"让:期望与变量和表达式绑定,但找到别的东西"我怎么能解决它,任何想法?

scheme

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

计划格式错误的特殊形式让

我正在尝试编写一个计划程序,这是Dijkstra的最短算法.在我放松边缘的过程中,我得到了错误

形成不良的特殊形式:(让(...)())

我的程序代码是,

(define relax-over-edge 
   (lambda (distlist edge min-pair)
     ( if (null? distlist)
       ()
       (if (equal? (cadr edge) (caar distlist)) 
            (if (> (cdar distlist) (+(cdr min-pair) (cddr edge)))
                (let (((cdar distlist) (+ (cdr min-pair) (cddr edge)) )) ())
                ()
            )
            (relax-over-edge (cdr distlist) edge min-pair)
        )
     )  
   )
)
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

scheme dijkstra let

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

列表中的解引用变量

是否可以取消引用列表中包含的变量,以获取其值?例如:

(define one 1)
(define two 2)

(define list '(one two))

(display (list-ref list 0))
Run Code Online (Sandbox Code Playgroud)

这里list-ref引用one并以字母display显示one.可以改为one取消引用同音变量包含的值吗?

scheme

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

Scheme如果对以空格char结尾,结果将在两个元素之间有一个点

如果pair以空格char结尾,为什么结果值包含一个点(.)?这个点(.)是什么意思?

(cons 1 2 )
;Value 2: (1 . 2)

(car (cons 1 2 ))
;Value: 1

(cdr (cons 1 2 ))
;Value: 2
Run Code Online (Sandbox Code Playgroud)

这一个看起来很愚蠢,因为对只包含两个元素.

我只是想知道为什么第一个表达式在结果中回显一个点!

(cadr (cons 1 2 ))
;The object 2, passed as an argument to safe-car, is not a pair.
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.
Run Code Online (Sandbox Code Playgroud)

谢谢!

lisp scheme sicp

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

方案说明

我正在阅读一本编程语言书,它要求我解释下面的Scheme函数的作用(不确定,有人可以帮忙解释):

(define (x lis)
  (cond ((null? lis) 0) 
        ((not (list? (car lis))) 
         (cond 
          ((eq? (car lis) #f) (x (cdr lis))) 
          (else (+ 1 (x (cdr lis)))))) 
        (else (+ (x (car lis)) (x (cdr lis))))))
Run Code Online (Sandbox Code Playgroud)

scheme

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

字符串与符号

所以我只是在球拍中,正在考虑使用键与计算机进行交互,并且通过球拍将键解释为字符串.我正在寻找我的代码的优化,并想知道字符串或符号是否更快操作.

scheme racket

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

如何在Racket中改进这种辅助功能?

我正在使用BSL语言在HtDP,第4章中工作.

我正在处理的问题是:

练习136:如果你运行main,按空格键(开枪),等待很长时间,镜头从画布上消失.但是,当您关闭世界画布时,结果是一个仍包含此隐形镜头的世界.

设计一个替代的tock函数,它不仅可以每个时钟刻度移动一个像素,还可以消除那些坐标位于画布上方的像素.提示:您可能希望考虑为递归cond子句设计辅助函数.

我想出的解决方案如下(在剧透中).但是,我觉得我在做一些多余的事情.基本上我的辅助功能的应用不太正确.

(define (main w0)
  (big-bang w0
            (on-tick ticking)
            (on-key fire-key)
            (to-draw to-render)))

(define HEIGHT 100)
(define WIDTH 80)
(define TURRET-X-POS (/ WIDTH 2))
(define BKGRND (empty-scene WIDTH HEIGHT))
(define SHOT-IMG (triangle 4 "solid" "red"))

(define (to-render w0)
  (cond
    [(empty? w0) BKGRND]
    [else (place-image SHOT-IMG TURRET-X-POS (first w0) (to-render (rest w0)))]))

(define (fire-key w0 ke)
  (cond
    [(key=? ke " ") (cons HEIGHT w0)]
    [else w0]))

(define (ticking w0)
  (cond
   [(empty? w0) empty]
   [(empty? (only-inbound-shots w0)) empty]
   [else …
Run Code Online (Sandbox Code Playgroud)

scheme racket

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

如何在Chicken Scheme中使用中止程序

我正在尝试使用Chicken Scheme的 中止程序,如下面的代码所示:

(module change-calculator (export calculate-change)
  (import scheme)

  (define (calculate-change coin-values amount)
    (cond ((null? coin-values) (abort '"coin-values should contain at least one value."))
          ((= 0 amount) '() )))
)
Run Code Online (Sandbox Code Playgroud)

但得到以下警告:

Warning: reference to possibly unbound identifier `abort' in:
Warning:    calculate-change
Run Code Online (Sandbox Code Playgroud)

该文档未提及任何需要导入的附加模块.我尝试导入extras,utils,srfi-12没有任何成功.谁能告诉我使用中止程序的正确方法?还是我错过了别的什么?

scheme abort chicken-scheme

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

标签 统计

scheme ×10

racket ×3

lisp ×2

abort ×1

chicken-scheme ×1

dijkstra ×1

let ×1

sicp ×1

types ×1