标签: racket

无法在Scheme中的列表中添加其他所有奇数元素

我正在尝试添加列表中的所有奇数元素.

我无法弄清楚出了什么问题.它适用于所有赔率的列表,但如果甚至只有一个偶数,则会导致错误 - 它表示它期望一个数字作为第二个元素,而是传入一个列表,这不应该发生.

我的代码出了什么问题?

(define list-sum-odd
  (lambda (list)
    (cond
      ((null? list)
       0)
      ((odd? (car list))
       (+ (car list) (list-sum-odd (cdr list))))
      (list-sum-odd 
       (cdr list)))))
Run Code Online (Sandbox Code Playgroud)

scheme list racket

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

字符串与符号

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

scheme racket

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

语法错误(标识符后的多个表达式)

我正在编写一个函数,try-weak-cues用于从大量响应中选择响应.该程序本质上是与用户的对话.

(define try-weak-cues
        (lambda (sentence context)
        (define helper
           (lambda(list-of-pairs)
          (define helper2
            (lambda(list-of-pairs context)
              (cond((null? list-of-pairs)
                  (cond((null? list-of-pairs) '())
                       ((any-good-fragments?(cue-part(car list-of-pairs))sentence) (helper2(cdr(car list-of-pairs))context))
                        (else(helper(cdr list-of-pairs)))))))))
                       (helper *weak-cues*))))
Run Code Online (Sandbox Code Playgroud)

下面是该函数应该从中获取的响应列表:

 (define *weak-cues*
  '( ( ((who) (whos) (who is))
       ((first-base)
           ((thats right) (exactly) (you got it)
        (right on) (now youve got it)))
       ((second-base third-base)
           ((no whos on first) (whos on first) (first base))) )
     ( ((what) (whats) (what is))
       ((first-base third-base)
       ((hes on second) (i told you whats on second)))
       ((second-base)
       ((right) …
Run Code Online (Sandbox Code Playgroud)

lisp scheme racket

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

Scheme如何在if条件中定义var

我是 Scheme 编程的新手,并试图在 if 条件中定义一个 var。例如,我有:

(if (< x y) (define x y) ) ;(GOAL: if x < y, than x=y..)
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

let: bad syntax (not an identifier and expression for a binding) in:...
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题,将不胜感激。

ps对不起我的英语

scheme racket

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

将元素插入列表列表中的子列表的开头

我的任务有点麻烦.我必须创建一个请求列表和元素列表的过程,然后继续将元素添加到每个子列表中的第一个位置.我设法做到了,它看起来像这样:

(define (add-element lst elem)
   (foldr cons lst (list elem)))

(define (insert-first lst1 x)
  (cond
   [(empty? lst1) empty]
   [else (local [(define insert (add-element(first lst1) x))]
        (cons insert (insert-first (rest lst1) x)))]))
Run Code Online (Sandbox Code Playgroud)

所以,如果你要输入,(insert-first '((a b) (c d))你最终会得到(list (list 'x 'a 'b) (list 'x 'c 'd))

唯一的问题是我需要使用map和编写程序local.后者我认为我已经完成了但我不能为我的生活找到一种方法来使用map.

lisp scheme racket

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

方案递归循环不正确的值和变量绑定

我在这里开始了一个关于我正在开发的刽子手游戏的问题。

递归方案函数值错误

我觉得刽子手部分让人们对我的真实问题和问题感到困惑。我的问题是,我从递归循环中调用了各种定义的函数并得到了不正确的值。当我自己调用这些相同的函数时(不是在递归循环中),它们会按预期工作。我知道这要么是我忽略的东西,要么是我需要解决方法的变量绑定问题。

首先在这里重现问题代码:

(define (recurse a_list a_number)
       (cond ((= a_number 0)
                 (display "Zero Condition.")
              )
             (else
                 (display "\n\n")
                 (display-list a_list ",")
                 (display "\n")
                 (display (car a_constant))
                 (display "\n")
                 (display "If the above letter is in the list, result should be true\n")
                 (display (contains? a_list (car a_constant)))
                 (display "\n")
                  (display "Enter a letter:")
                  (recurse (cons (symbol->string (read)) a_list) (- a_number 1))
              )
        )
   )
Run Code Online (Sandbox Code Playgroud)

以下是我在递归循环中使用的定义:

(define (display-list a_list separater)

   (if (null? a_list)

      (display "")

      (begin 

         (display (car a_list))

         (if (null? …
Run Code Online (Sandbox Code Playgroud)

data-binding recursion scheme racket

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

方案 - 在if句中正确使用"和"

我目前正在Scheme中为一个作业编写一个小项目.我没有长时间使用Scheme,所以我对语法不够强.

问题是在if句中使用"和".我有一个日历中的约会列表,但我只想要在一定时间间隔之间的约会.因此,我需要检查开始和结束时间.

我希望实现的内容在C#中看起来像这样:

List<appointment> appointments = new List<appointment>();

    foreach (appointment app in calendar) {
        if(app.getstart() >= from-time && app.getend() <= to-time) {
            appoinments.add(app);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我目前在Scheme中拥有的是:

(define (time-calendar cal from-time to-time)
  (map (lambda (app)(if (> from-time (send 'getstart app)) #t #f))
         (send 'getappointments cal)))
Run Code Online (Sandbox Code Playgroud)

采用日历"cal"和时间间隔(从时间到时间)然后我从cal获得约会(app)并迭代它们.对于每个人,我检查时间是否大于"app"的开始时间.相应地返回true或false.这很有效,但我仍然需要考虑约会是否也在"准时"之前结束.这应该是添加另一个条件的简单问题,但我根本无法使其工作.

任何人都可以帮助我检查第二个变量的正确语法吗?我知道关于Racket文档,但我仍然无法解决我的问题.

我尝试更换cond的if句子.

我也尝试了一些"and"部分的变体,与此类似,但无法正确使用语法:

(define (time-calendar cal from-time to-time)
  (map (lambda (app)(if (and((> from-time (send 'getstart app))) (< to-time (send 'getend app))) #t #f))
         (send 'getappointments cal)))
Run Code Online (Sandbox Code Playgroud)

scheme if-statement conditional-statements racket

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

条件跳转或移动取决于未初始化的值 strcat

我知道发生这个 valgrind 错误是因为我试图使用未初始化的东西。下面的代码是导致此错误的代码。它正在做的是尝试读取 Racket 代码并获取每个符号,例如 + 或define。(标记化)我不希望您彻底理解代码,因为还有很多其他代码可以理解它在做什么。但是,如果您能就我在该行收到此错误的原因提出您的想法,我将不胜感激,symbol = strcat(symbol, newsymbol);

char* newsymbol = talloc(sizeof(char)*2);
                *newsymbol = charRead;
                newsymbol[1] = '\0';
                symbol = strcat(symbol, newsymbol);
Run Code Online (Sandbox Code Playgroud)

c tokenize racket

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

如何评估在方案中给出值的函数

(F nmlfg):n和m是自然数,la数字列表,f和g函数采用数字参数并返回数字.F函数应该返回:

在此输入图像描述

我需要在scheme中编写这个函数.我已经为产品开发了一个函数,但没有为如何执行角色的评估,我尝试使用eval命令但还没有工作

有什么帮助怎么办?

scheme functional-programming racket

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

方案 - 没有名称的函数调用

我正在使用 DrRacket 在方案中实现我的代码。我是这门语言的新手,我的作业需要一些帮助。我的老师想让我从控制台调用一个函数,她不希望我用它的名字来调用它。

这是不允许的 => (function-name 'John (X pcf F g K :: 1 4))

而不是使用该符号,我必须不带名称调用我的函数。

这就是她想要的 => ('John (X pcf F g K :: 1 4))

有没有办法定义一个没有名字的函数并调用它?我在互联网上搜索了很多,但找不到解决方案。

lambda scheme function racket

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