标签: chez-scheme

(Chez)计划基准?

既然Chez Scheme是开源的,我想知道它在性能方面与Racket和其他方案或语言的比较,以便人们可以在一个项目中做出明智的选择.

不幸的是,我找不到任何相关的基准.

我找到了以下内容:


https://ecraven.github.io/r7rs-benchmarks/benchmark.html

问题:没有Racket或其他语言(更新10/13/18:Chez现在包含在一些基准测试中)


http://www.larcenists.org/benchmarksGenuineR6Linux.html

问题:没有Chez Scheme或其他语言


https://benchmarksgame-team.pages.debian.net/benchmarksgame/

问题:只有Racket,可疑的比较(例如,Python不允许使用Numpy显然有帮助,而Racket正在向GMP发出FFI调用)


因此,我找到的基准测试中没有一个允许您将Racket与Chez进行比较,或者将Chez与SBCL或Java进行比较.是否有Chez基准测试可以让您了解它的速度有多快?

Chez Scheme通常被认为是最快的Scheme/Lisp.我们应该知道它是否比典型的业务逻辑应用程序的Java更快.

lisp scheme functional-programming racket chez-scheme

7
推荐指数
1
解决办法
3861
查看次数

如何在 Ubuntu 上安装 Petite Chez Scheme?

如何在 Ubuntu 上安装 Petite Chez Scheme?

我运行 Ubuntu 15.10 并尝试为 Linux 安装 pcsv8.4-a6le.tar.gz(非线程,64 位)。

在解压这个 tar 之后/usr/locale,我输入命令

sudo ./configure 
sudo make install 
Run Code Online (Sandbox Code Playgroud)

custom目录中。

但是,不是全新安装,而是出现以下错误(我希望有人可以帮助我):

nlykkei@nlykkei-Studio-XPS-1640:/usr/local/csv8.4/custom$ sudo make install
if [ yes = no ]; then if [ ! -f ./scheme ]; then /bin/rm -f ./scheme; ln -s ../bin/a6le/scheme ./scheme; fi; fi
if [ ! -f ./petite ]; then /bin/rm -f ./petite; ln -s ./scheme ./petite; fi
/bin/rm -f ./scheme
echo "const char *S_date_stamp = \"`date +%m%d%Y%H%M%S`\";" …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu scheme chez-scheme

6
推荐指数
1
解决办法
3766
查看次数

方案:检测列表中的重复元素

R6RS或Chez Scheme v7.9.4是否具有库函数来检查列表是否包含重复元素?

或者,是否具有集合的任何内置功能(允许重复元素)?到目前为止,我只能在这里找到一个例子.

问题在于它实际上并不是Chez Scheme库的一部分.虽然我可以编写自己的版本,但我更倾向于使用一个众所周知,经过测试和维护的库函数 - 特别是考虑到这是一个基本的操作.

因此,简单的"使用这些内置函数"或"没有内置库实现这一点"就足够了.谢谢!

scheme list set chez-scheme

5
推荐指数
1
解决办法
2132
查看次数

欧几里德算法求解RR' - NN'= 1.利用蒙哥马利算法进行模幂运算,在python或Petite Chez方案中实现Fermat检验

这在我使用Scheme教授的入门编程课程中是个人挑战,但我对Python示例同样满意.

我已经在方案中实现了模幂运算的二进制方法,如下所示:

(define (pow base expo modu)
  (if (zero? expo)
      1
      (if (even? expo)
          (mod (expt (pow base (/ expo 2) modu) 2) modu)
          (mod (* base (pow base (sub1 expo) modu)) modu))))
Run Code Online (Sandbox Code Playgroud)

这是必要的,因为Chez Scheme没有任何类似于python的pow(base expo modu)的实现.

现在我正在尝试实现解决模乘的蒙哥马利方法.举个例子,我有:

Trying to solve:
    (a * b) % N
N = 79
a = 61
b = 5
R = 100
a' = (61 * 100) % 79 = 17
b' = (5 * 100) % 79 = 26
RR' - NN' = …
Run Code Online (Sandbox Code Playgroud)

algorithm scheme modular exponentiation chez-scheme

5
推荐指数
1
解决办法
476
查看次数

Chez方案可以生成编译的二进制文件吗?

我最近一直在使用鸡肉计划,我发现它非常好,有人建议chez计划是最快的计划实施.所以我想尝试一下,但我不知道如何从chez中创建已编译的二进制文件,如鸡计划.

scheme chicken-scheme chez-scheme

5
推荐指数
2
解决办法
1824
查看次数

Chez计划:顶级宏指令导入

我正在运行Chez Scheme 9.5,并尝试在库中定义语法转换器。这是一个例子:

(library (forlib)
  (export for)
  (import (rnrs (6)))

  (define-syntax for
    (syntax-rules (in)
      [(for x in lst body1 body2 ...)
       (for-each (lambda (x) body1 body2 ...) lst)])))
Run Code Online (Sandbox Code Playgroud)

我将其保存在文件中forlib.sschez从同一目录运行。然后在REPL中,我得到以下信息:

> (import (forlib))
> (for x in '(1 2 3) (display x))
Exception: invalid syntax (for x in (quote (1 2 3)) (display x))
Type (debug) to enter the debugger.
Run Code Online (Sandbox Code Playgroud)

如果我将语法定义更改为

(define-syntax for
  (syntax-rules ()
    [(for x lst body1 body2 ...)
     (for-each (lambda (x) body1 body2 ...) …
Run Code Online (Sandbox Code Playgroud)

scheme r6rs chez-scheme

5
推荐指数
1
解决办法
161
查看次数

Chez Scheme分配:--program vs --script

考虑一下Chez Scheme代码的这一点:

(进口(chezscheme))

(定义(list-enumerate ls val proc)
  (让循环((ls ls)(返回?#f)(val val))
    (如果(或(空?ls)
            返回?)
        值
        (值调用(lambda()(proc val(car ls)))
          (lambda(返回值)
            (循环(cdr ls)return?val))))))

(定义(list-index ls proc)
  (列表枚举ls
                  0
                  (lambda(i elt)
                    (如果(proc elt)
                        (值#ti)
                        (值#f(+ i 1))))))

(定义n 100000)

(定义数据(iota n))

(时间(列表索引数据(lambda(elt)(= elt(-n 1)))))

运行:

〜$ scheme-脚本〜/ scratch / _list-enumerate-allocation-test-chez-a.sps 
(时间(列表索引数据...))
    没有收藏
    经过3 ms的cpu时间
    实时经过4毫秒
    分配了8个字节

哇,它报告只分配了8个字节。

让我们使用--program选项而不是再次运行它--script

〜$ scheme-程序〜/ scratch / _list-enumerate-allocation-test-chez-a.sps 
(时间(列表索引数据...))
    没有收藏
    经过3 ms的cpu时间
    实时经过3毫秒
    分配了800000字节

Yikes,分配了800000字节。

有什么区别?

埃德

scheme chez-scheme

4
推荐指数
1
解决办法
542
查看次数

Andmap\ormap - 方案

我试图在 chez 方案中查找有关 andmap 和 ormap 操作的信息。

尽管如此,我还是不明白这些操作的用途,以及它和map有什么区别。

scheme chez-scheme

4
推荐指数
1
解决办法
3705
查看次数

怎么让*定义在Chez Scheme/Racket?

如何let*在Chez Scheme/Racket中定义?特别是,为什么第一个例子评估为6 ......

(let* ((let +) (a (let 2 4)))
    a)
Run Code Online (Sandbox Code Playgroud)

......当我从认识运动3.1.3的是,let*可扩展到嵌套let(甚至嵌套let*)语句,但扩大正如人们所预料的解释做会导致错误上面的例子?

(let ((let +))
    (let (a (let 2 4))
        a))
Run Code Online (Sandbox Code Playgroud)

实施是否与练习不同?我希望第一个例子由于新的定义而导致错误let.

scheme let racket chez-scheme

4
推荐指数
1
解决办法
377
查看次数

在方案中定义 goto

作为学习 call/cc 和宏的练习,我尝试定义 goto。

(define-syntax label
  (syntax-rules ()
           ((_ name)
        (begin
          (define name)
          (call/cc (lambda (c) (set! name c)))))))

(define (goto label) (label))

(define i 0)
(label start)
(display i) (newline)
(set! i (+ i 1))
(if (< i 3) (goto start))
(display "done") (newline)
Run Code Online (Sandbox Code Playgroud)

它适用于 guile-2.0,但在 chez 方案和球拍(r6rs)中它只打印

0
done
Run Code Online (Sandbox Code Playgroud)

哪个实现是正确的?

macros scheme guile racket chez-scheme

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

进行整数除法的最快方法是什么?

使用方案我需要使用以下功能.(所有args都是自然数[0,inf))

(define safe-div
  (lambda (num denom safe)
    (if (zero? denom)
        safe
        (div num denom))))
Run Code Online (Sandbox Code Playgroud)

但是,此功能经常被调用,并且表现不佳(速度快).是否有更有效的方法来实现所需的行为(num和denom的整数除法,如果denom为零则返回安全值)?

注意,我正在使用Chez Scheme,但是这个用于只导入rnrs的库,而不是完整的Chez.

performance scheme integer-division chez-scheme

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

在Scheme中,`(begin)`的返回值是多少?

我知道它将(begin expr1 expr2 ...)评估所有表达式并返回最后评估的表达式。

我发现在 Chez Scheme 中允许使用begin不带表达式的形式,如下所示:(begin)。我正在使用 Chez Scheme 作为我学习的一部分。当我在控制台中写入时,(begin)它不会发送语法错误,它只是显示任何内容,就好像我收到了void.

我的问题是,那么会返回什么?

我以为这是你可以通过运行获得的 void 对象(void)。然而,当我测试它时,我意识到事实并非如此。

我正在学习 Chez Scheme 作为我正在学习的编译器课程的一部分,我需要实现可以处理特殊单词 的编译器的一部分begin。所以我需要知道为什么这是可能的以及这个函数返回什么。

编辑:

我正在添加有关此主题的链接。我无法完全理解答案。另外,他没有提到返回类型。

compiler-construction scheme language-implementation expression-evaluation chez-scheme

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