标签: scheme

Scheme中命令的执行顺序

我正在编写一个程序中的程序,它使用递归遍历列表,并在计数器达到一定数量N时停在某个指针处

(define (functX N lst)
  (define counter 1)
  (cond
    [(empty? lst) empty]
    [(negative? N) empty]
    [(< (length lst) N) empty]
    [(<= counter N) ((set! counter (+ counter 1))(cons (first lst) (functX N (rest lst)))))]
    [else empty]))
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么从底部的第二行给我带来麻烦:我得到的错误是"程序应用程序:预期程序,给定:'(1)(无参数)"

scheme

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

根据其值读取和重新创建列表

我想根据其值创建列表的子集.例如:

List (AA AB BA DC AD)
Run Code Online (Sandbox Code Playgroud)

我想要一个列表,其中包含所有原子的值,从'A'开始.所以答案应该是:

(AA AB AD)
Run Code Online (Sandbox Code Playgroud)

我现在可以通过遍历整个列表并将每个值转换为另一个列表并读取第一个值然后重新创建列表来实现此目的.

这是一个非常复杂的解决方案.

Scheme中是否有任何方法可以读取列表中字符串的第一个字符并删除该元素?

scheme racket

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

是否有用于重写CPS的宏?

例如,我有两个异步方法

(get-a 10 (lambda (a) (get-b a (lambda (b) (display b)))
Run Code Online (Sandbox Code Playgroud)

但我想写一些类似的东西

(define (a (get-a 10)))
(define (b (get-b a)))
(display b)
Run Code Online (Sandbox Code Playgroud)

scheme continuations functional-programming callcc continuation-passing

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

自定义eqv?/相等?计划中的功能

我将如何编写自己的eqv?还是相等?在计划?我会做一个cond并寻找符号吗?,数字?等,并返回相应的#t或#f?

comparison scheme function

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

如何编写从列表中随机选择一对的过程?

我正在创建一个跳棋游戏,我需要一个程序,从一对列表中随机选择一对.

random scheme list racket

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

Python的Reduce函数 - 用Scheme编写

晚间!

我需要在Scheme中编写一个reduce函数,它就像Python中的内置reduce函数一样.在Scheme中编写reduce函数很容易:

(define (reduce fn lis identity)
  (if (null? lis)
    identity
    (fn (car lis)
        (reduce fn (cdr lis) identity))))
Run Code Online (Sandbox Code Playgroud)

但是,此代码与Python reduce不同,后者仅使用两个参数(函数和要减少的项列表).

任何人都可以我写一个这样工作的Scheme函数吗?

(>(reduce*'(2 4 5 5))=> 200,是我们教授的例子.)

非常感谢,伙计和女孩们.你是如此有帮助<3

ETA:对Levien先生和Jester-Young先生,非常感谢你.您提供了大量的信息,以帮助我自己解决问题.*拥抱

reduce scheme

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

基本方案递归

我有这样一个文件:

    declare
    a = aexpress 
    b = bexpress 
    begin 
Run Code Online (Sandbox Code Playgroud)

我的方案程序将当前输入端口设置为此文件,然后调用 (declarations (read)) 我回来的内容,是#f.或者说控制台说"对象#f不适用".

我已经完成了我的括号使用,并且无法找到任何理由它应该返回一个布尔值,但我确定我错过了一些东西.

我想要的是((a aexpress)(b bexpress))

(define declarations
  (lambda (token)
    (cond (((eq? token 'begin) '())
           (else (let* ((name token)
                        (eqsign (read))
                        (value (read)))
                   (cons (list name value) (declarations (read)))))))))
Run Code Online (Sandbox Code Playgroud)

被称为:

    (define convert
      (lambda (filename)

         (begin
           (set-current-input-port! (open-input-file filename))
           (statement (read))
           )

        )
      )
 (define statement (lambda (token) (

                                   cond (
                                     ( (eq? token 'declare) (declarations (read)) )
                                        ;       ( (eq? token 'declare) (declare_statement)  )
                                        ;       ( (eq? …
Run Code Online (Sandbox Code Playgroud)

lisp recursion scheme

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

是否继续记录PC并注册状态?

目前,当我正在尝试功能语言的延续时,我的理解是继续记录当前程序计数器和寄存器文件,当返回延续时,PC和注册文件将恢复为它记录的值.

所以在Might博客文章中的以下愚蠢的例子中,

; right-now : -> moment
(define (right-now)
  (call-with-current-continuation 
   (lambda (cc) 
     (cc cc))))

; go-when : moment -> ...
(define (go-when then)
  (then then))  


; An infinite loop:
(let ((the-beginning (right-now)))
  (display "Hello, world!")
  (newline)
  (go-when the-beginning))  ; here the-beginning continuation passed to go-when, which ultimately will have an continuation applied to an continuation, that returns a continuation, which will cause the the program point resumed to the PC and registers states recorded in it.
Run Code Online (Sandbox Code Playgroud)

我不确定我的理解是对的..如果你认为不是,请纠正我.....

scheme continuations functional-programming racket

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

Lisp中的序列

嗨Lisp中的序列是什么?和Lisp中的序列和列表有什么区别?谢谢.

lisp scheme common-lisp

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

在球拍中的gensym

我知道gensym可以生成符号,但似乎有一个基数的全局计数器,它可能非常大,例如,(define s (gensym 's))s可以最终得到s12345.我想知道是否有办法重置计数器,生成的数字可能很小?喜欢s14

scheme racket

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