首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用哪个标识符来关闭R7RS/Scheme中的库?

我应该使用哪个标识符来关闭R7RS/Scheme中的库?
EN

Stack Overflow用户
提问于 2022-12-04 18:43:06
回答 1查看 25关注 0票数 0

我正在尝试编写一个R7RS库,它将以破坏性的方式逆转列表,

我目前已经写了这段代码;

代码语言:javascript
复制
#lang r7rs


(define-library (in-place-reverse!)
  (export reverse!)
  (import (scheme base))

(ignore the code below)
;    (define (reverse! list)
;      (if (null? list)
;          '()
;          (append (reverse (cdr list))
;                  (list (car list)))))))
(begin
  
    (define (reverse! lst)
      (define (reverse-hulp! prev cur)
        (cond
          ((null? cur) prev)
          ((next) cdr cur)
          ((set-cdr! cur prev))
          (else
            (reverse-hulp! cur next))))))
              
      (reverse! '() lst))

我唯一担心的是我收到的错误。

代码语言:javascript
复制
 define-library: expected one of these identifiers: `import', `export', `begin', `cond-expand', or `include'
  parsing context: 
   while parsing library clause in: reverse!

我的代码是否按照我的要求工作?任何一种建议都是值得感激的!

试图实现反向过程,就像在R5RS中那样,这次我使用的是破坏性操作符。

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 19:37:02

您的错误消息与代码不匹配。当我运行您的示例时,会得到以下错误:

代码语言:javascript
复制
define-library: expected one of these identifiers: `import', `export', `begin', `cond-expand', or `include'
  parsing context: 
   while parsing library clause in: ignore

如果我注释掉ignore表单,我会得到您的错误,并突出显示表达式(reverse! '() lst)

问题是表达式在begin之外。另外,其意图可能是在reverse!中启动该过程。

代码语言:javascript
复制
#lang r7rs


(define-library (in-place-reverse!)
  (export reverse!)
  (import (scheme base))

  (begin
  
    (define (reverse! lst)
      (define (reverse-hulp! prev cur)
        (cond
          ((null? cur) prev)
          ((next) cdr cur)
          ((set-cdr! cur prev))
          (else
           (reverse-hulp! cur next))))
      (reverse! '() lst))))

然后,您需要弄清楚如何处理next

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74679810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档