标签: racket

计划的时间安排

我目前正在解决Project Euler的问题,我正在用C#和Scheme(Racket实现)解决它们.我知道C#,但我正在学习Scheme.

现在,除了找到问题的正确结果之外,我还想提出我能想到的最快的解决方案.为此,在C#中我使用StopWatch来测量代码的性能.有时间代码执行的类似Scheme库/功能吗?

scheme timing racket

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

free-identifier =?之间的区别?和bound-identifier =?

试图理解free-identifier =?和bound-identifier =?.任何人都可以给我使用free-identifier =的等效代码示例吗?将返回true并使用bound-identifier =?将返回false.

谢谢

scheme r6rs racket

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

将文件转换为方案中的列表或字符串

我在处理文本文件并将其转换为列表或字符串时遇到了一些问题.

说我有"blah.txt",其中包含:

3 + 4
Run Code Online (Sandbox Code Playgroud)

现在我想调用我知道可以完成的文件

(define in (open-input-file "blah.txt"))
Run Code Online (Sandbox Code Playgroud)

我从哪里拿到它?

scheme racket

9
推荐指数
2
解决办法
7321
查看次数

减少Racket的功能?

我在Racket中遇到了这个任务5天,有人知道我该如何处理它?

给定arity 2的功能和n元素列表,返回所有元素的字符串函数的评估,例如:

>(reduce + '(1 2 3 4 5 6 7 8 9 10))

55

> (reduce zip '((1 2 3) (4 5 6) (7 8 9)))
'((1 (4 7)) (2 (5 8)) (3 (6 9)))
Run Code Online (Sandbox Code Playgroud)

recursion scheme functional-programming racket

9
推荐指数
2
解决办法
3750
查看次数

检测脚本中是否从命令行执行脚本?

我是Racket(和Lisp的一般)的新手,我想知道是否有一种规范的方法可以检测脚本是否从命令行运行?

例如,在Python中,执行此操作的标准方法是if __name__ == __main__::

def foo():
    "foo!"

if __name__ == "__main__":
    foo()
Run Code Online (Sandbox Code Playgroud)

现在,假设我有以下的Racket代码,并且respond只有当它作为脚本运行时我才会被调用.

#lang racket
(require racket/cmdline)

(define hello? (make-parameter #f))
(define goodbye? (make-parameter #f))

(command-line #:program "cmdtest"
              #:once-each
              [("-H" "--hello") "Add Hello Message" (hello? #t)]
              [("-G" "--goodbye") "Add goodbye Message" (goodbye? #t)])

(define (respond)
  (printf "~a\n"
          (apply string-append 
                 (cond
                  [(and (hello?) (goodbye?)) '("Hello" " and goodbye.")]
                  [(and (hello?) (not (goodbye?))) '("Hello." "")]
                  [(and (not (hello?)) (goodbye?)) '("" "Goodbye.")]
                  [else '("" "")]))))
Run Code Online (Sandbox Code Playgroud)

有没有简单/标准的方法来实现我想要的?

scheme command-line-interface racket

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

从C调用球拍功能

我有一个球拍模块hw.rkt:

#lang racket/base

(provide hw)

(define (hw) (displayln "Hello, world!"))
Run Code Online (Sandbox Code Playgroud)

我想编写一个嵌入Racket运行时并应用该过程的C程序(hw).

有示例代码这里演示如何嵌入球拍运行时和应用过程,在racket/base,或阅读和评价的S-表达,但我没有运气修改这些代码以允许访问(hw)程序.

本页面似乎是说,这是可能做到什么,我想先编译hw.rkt使用到hw.c做raco ctool --c-mods,当我尝试这工作得很好,但我仍然无法实际访问(hw)过程.

如果有人可以发布一个完整的示例程序,或者只是描述要使用哪些C函数,我将非常感激.从那里我可以弄清楚剩下的.


编辑以提供我尝试过的事情的示例.

我修改了示例程序以摆脱"评估命令行参数"位并直接跳到REPL以便我可以进行实验.因此(用"hw.c"运行的结果raco ctool --c-mods hw.c ++libs racket/base hw.rkt):

#define MZ_PRECISE_GC
#include "scheme.h"

#include "hw.c"

static int run(Scheme_Env *e, int argc, char *argv[])
{
  Scheme_Object *curout = NULL, *v = NULL, *a[2] = {NULL, NULL};
  Scheme_Config *config = NULL;
  int i;
  mz_jmp_buf * volatile save = NULL, fresh; …
Run Code Online (Sandbox Code Playgroud)

c embedding racket

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

在PLT计划中循环

如何在java-中实现plt-scheme中的循环

for(int i=0;i<10;){
     for(int j=0;j<3;){
          System.out.println(""+j);
          j++;
     }
      System.out.println(""+i);
      i++;
}
Run Code Online (Sandbox Code Playgroud)

syntax scheme loops racket

8
推荐指数
3
解决办法
1万
查看次数

如何知道是否定义了球拍变量

如果在球拍语言中定义或不定义变量,您将如何获得不同的行为?

variables defined racket

8
推荐指数
2
解决办法
2195
查看次数

Racket/Scheme中的zip功能

给定两个列表,返回一个列表,其元素是大小为2的列表,这样对于i-th列表,第一个元素是i第一个原始列表的i第 - 个元素,第二个元素是第二个原始列表的第 - 个元素名单.如果一个列表小于另一个列表,则结果列表的大小最小; 因此,如果其中一个列表为空,则返回一个空列表.例如:

> (zip '(1 2) '(3 4))
'((1 3) (2 4))

> (zip '(1 2 3) '())
'()
> (zip '() '(4 5 6))
'()
> (zip '(8 9) '(3 2 1 4))
'((8 3) (9 2))
> (zip '(8 9 1 2) '(3 4))
'((8 3) (9 4))
Run Code Online (Sandbox Code Playgroud)

lisp recursion scheme functional-programming racket

8
推荐指数
2
解决办法
9049
查看次数

Little Schemer:什么是函数或参数的结构?

The Little Schemer的第3章中,关于为什么我们不立即简化rember函数的问题的答案是"因为那时函数的结构与其参数的结构不一致".我无法理解函数的结构是什么,参数的结构是什么,以及它们之间的区别.

这是未简化的版本:

(define rember
  (lambda (a lat)
    (cond
      ((null? lat) (quote ()))
      (else (cond
        (( eq? (car lat) a) (cdr lat))
        (else (cons (car lat)
          (rember a
            ( cdr lat)))))))))
Run Code Online (Sandbox Code Playgroud)

这是简化的:

(define rember
  (lambda (a lat)
    (cond
      ((null? lat) (quote ()))
      ((eq? (car lat) a) (cdr lat))
      (else (cons (car lat)
               (rember a (cdr lat)))))))
Run Code Online (Sandbox Code Playgroud)

据我所知,主要的不同之处在于,这个功能已经从两个问题变成了一个问题,每个问题一个问题,一个问题得到两个问题.

函数的参数是原子"a"和列表"lat".

这是第一次在密集书面的前言之外,书中引用了"结构"这个词.在我看来,到目前为止,"结构"一词的定义可以解释.

之前有人问过这个确切的问题,但我无法回答这个问题.为什么两个cond结构与列表的结构重合或不重合?在我看来,清单根本没有任何条件!

不是条件相当于Scheme中的问题吗?也许我误解了条件是什么,这可能是我沮丧的合理根源.无论如何,对此的任何澄清将非常感谢!谢谢!

scheme structure conditional-statements the-little-schemer racket

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