`
lobin
  • 浏览: 425729 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ChezScheme

阅读更多

1.string

> "abcdefg"

"abcdefg"

 

> (string #\a #\b #\c #\d #\e #\f #\g)

"abcdefg"

 

> (mutable-string? "abcdefg")

#t

> (immutable-string? "abcdefg")

#f

 

> (let ([s "abcdefg"]) (mutable-string? s))

#t

> (let ([s "abcdefg"]) (immutable-string? s))

#f

 

> (string->immutable-string "abcdefg")

"abcdefg"

 

> (let ([s (string->immutable-string "abcdefg")]) (mutable-string? s))

#f

> (let ([s (string->immutable-string "abcdefg")]) (immutable-string? s))

#t

 

 2.list

> '(1 2 3 4 5 6);

(1 2 3 4 5 6)

 

> (list)

()

> (list 1 2 3 4 5)

(1 2 3 4 5)

 

> (list 'a 'b 'c 'd 'e 'f 'g)

(a b c d e f g)

 

> (list* 1 5)

(1 . 5)

 

> (make-list 5)

(#<void> #<void> #<void> #<void> #<void>)

> (make-list 5 5)

(5 5 5 5 5)

 

> (iota 6)

(0 1 2 3 4 5)

 

> (enumerate '())

()

> (enumerate '(a b c d e f g))

(0 1 2 3 4 5 6)

 

> (list-head '(a b c d e f g))

Exception: incorrect argument count in call (list-head (quote (a b c d e f ...)))

Type (debug) to enter the debugger.

> (list-head '(a b c d e f g) 0)

()

> (list-head '(a b c d e f g) 1)

(a)

> (list-head '(a b c d e f g) 2)

(a b)

> (list-head '(a b c d e f g) 3)

(a b c)

> (list-head '(a b c d e f g) 4)

(a b c d)

> (list-head '(a b c d e f g) 5)

(a b c d e)

> (list-head '(a b c d e f g) 6)

(a b c d e f)

> (list-head '(a b c d e f g) 7)

(a b c d e f g)

> (list-head '(a b c d e f g) 8)

Exception in list-head: index 8 is out of range for list (a b c d e f ...)

Type (debug) to enter the debugger.

 

> (remq! 'c '(a b c d e f g))

(a b d e f g)

> (remq! 'x '(a b c d e f g))

(a b c d e f g)

 

> (append! '(a b) '(c d))

(a b c d)

 

3.vector

> '#(a b c d e f g)

#(a b c d e f g)

 

> (vector 'a 'b 'c 'd 'e 'f 'g)

#(a b c d e f g)

 

> (vector->immutable-vector '#(a b c d e f g))

#(a b c d e f g)

 

> (mutable-vector? '#(a b c d e f g))

#t

> (mutable-vector? (vector->immutable-vector '#(a b c d e f g)))

#f

 

> (immutable-vector? '#(a b c d e f g))

#f

> (immutable-vector? (vector->immutable-vector '#(a b c d e f g)))

#t

 

> (let ([v '#(a b c d e f g)]) (vector-set-fixnum! v 3 100) v)

#(a b c 100 e f g)

 

4.fixnum-only vector

> #vfx(1 2 3 4)

#vfx(1 2 3 4)

 

5. record

syntax: (define-record name (fld1 ...) ((fld2 init) ...) (opt ...)) 

syntax: (define-record name parent (fld1 ...) ((fld2 init) ...) (opt ...)) 

 

> (define-record tmap (key value))

 

> (define m1 (make-tmap "adam" "add1"))

> m1

#[#{tmap br6stlesgmpl4cy9bmpnx2bck-0} "adam" "add1"]

 

> (tmap? m1)

#t

> (pair? m1)

#f

> (vector? m1)

#f

 

> (tmap-key m1)

"adam"

> (tmap-value m1)

"add1"

 

 

> (set-tmap-key! m1 "adam v2")

> (set-tmap-value! m1 "add1 v2")

> (tmap-key m1)

"adam v2"

> (tmap-value m1)

"add1 v2"

 

6.define

 

> (define x 1)

> x

1

> (define-syntax y (identifier-syntax 3));

> y

3

> (define-values (x1 y1) (values 1 2))

> x1

1

> y1

2

 

> (map

    (rec sum

      (lambda (x)

        (if (= x 0)

            0

            (+ x (sum

                   (- x 1))))))

    '(0 1 2 3 4 5))

(0 1 3 6 10 15) 

 

> (let

    ([x 100])

    x)

 

100

 

> (define sum

    (lambda

      (x y)

      (+ x y)));

> (sum 1 1);

2

> (sum 10 33);

43

 

 

7.

> (eq? "this" "this")

#f

> (eq? "this" "that")

#f

> (eq? 'this 'this)

#t

 

> (case 3

    (1 "Q1")

    (2 "Q2")

    (3 "Q3")

    (4 "Q4")

    (else "invalid param."))

"Q3"

 

> (case 3

    [1 "Q1"]

    [2 "Q2"]

    [3 "Q3"]

    [4 "Q4"]

    [else "invalid param."])

"Q3"

 

> (case "def"

    (("abc" "def") 'i)

    (((a b c)) 'ii)

    (else 'iii))

i

 

>  (case '(a b c)

     (("abc" "def") 'i)

     (((a b c)) 'ii)

     (else 'iii))

ii

 

> (define calc

    (lambda (x)

      (record-case x

        [(add) (x y) (+ x y)]

        [(sub) (x y) (- x y)]

        [(mul) (x y) (* x y)]

        [(div) (x y) (/ x y)]

        [else (assertion-violationf 'calc "invalid expression ~s" x)])))

 

> (calc '(add 3 4))

7

> (calc '(div 3 4))

3/4 

 

 

8.function

> (define sum

    (lambda

      (x y)

      (+ x y)));

> (sum 1 1);

2

> (sum 10 33);

43

 

9.

 

> (system "ls")

bin  boot  examples

0

 

> (process "ls")

(#<input port pid 17700 stdout>

  #<output port pid 17700 stdin>

  17700)

> (open-process-ports "ls")

#<binary output port pid 14844 stdin>

#<binary input port pid 14844 stdout>

#<binary input port pid 14844 stderr>

14844

 

10.

wget https://github.com/cisco/ChezScheme/archive/v9.5.tar.gz

wget https://github.com/cisco/ChezScheme/releases/download/v9.5/ChezScheme9.5.exe

分享到:
评论

相关推荐

    ChezScheme9.5.2.7z

    ChezScheme9.5.2.exe,windows 安装包,国外下载比较困难,所以上传一份;如果条件允许,可以从官网下载最新版本:https://github.com/cisco/ChezScheme/releases

    ChezScheme9.5.exe

    ChezScheme的window安装程序,(官网安装https://cisco.github.io/ChezScheme/),由于官网在国外,本人当时下了很半天,希望能帮助到下载慢的朋友们

    ChezScheme9.5.4.exe

    scheme编译器最新版,Windows下直接安装即可运行,sicp刷题必备。祝大家早日学到sicp之精髓~

    ChezScheme9.5.8.exe

    chezScheme在GitHub上面的官方版安装包。Windows

    ChezScheme9.5.2.exe

    传说中最快的scheme语言的解释器的实现,也带有编译功能,提供了优秀的REPL环境 可以用来配合SICP(《计算机程序的结构与解释》)的学习,也可以用来入门函数式编程 可以说是很实用的工具

    chez-exe:Chez Scheme自托管可执行文件

    chez-exe:ChezScheme自托管可执行文件该项目的目标是产生独立的可执行文件,这些文件是完整的ChezScheme系统并包含计划程序。 这是通过将ChezScheme引导文件和方案程序嵌入可执行文件来实现的。 Chez-exe将...

    The Scheme Programming Language

    ChezScheme是一个高效、优化的Scheme系统实现,其特点包括了高效的解释执行、编译至机器码的能力、对尾调用优化的支持以及对SRFI标准库的广泛支持。由于ChezScheme的速度和功能,它经常被推荐给初学者和经验丰富的...

    ChezScheme:Chez计划

    Chez Scheme既是一种编程语言,又是该语言的实现,带有支持工具和文档。 作为“(R6RS)描述的语言的超集,Chez计划支持Scheme的所有标准功能,包括一流的程序,对尾部调用的正确处理,延续,用户定义的记录,库,...

    scheme-lib:鸭库鸭gui gles gl lib lib openal socket web mongodb box2d游戏glfw mysql libevent libuv uv json http客户端服务器android osx linux chezscheme scheme-lib

    方案库 鸭库scheme-lib是一个计划使用的库。目前支持android osx linux windows,其他平台在规划中。 官方主页: ://evilbinary.github.io/scheme-lib/ QQ群:Lisp兴趣小组239401374 安装编译 Linux ...

    Idris 2是纯函数式编程语言,具有一流的类型。-Python开发

    Idris 2是纯函数式编程语言,具有一流的类型。 Idris 2 Idris 2是纯函数式编程语言,具有一流的...这通常是方案之一,chezscheme或chezscheme9.5(取决于版本)。 在现代台式机上,此过程(包括测试)应花费更少的时间

    Idris2:具有一流类型的纯函数式编程语言

    这通常是scheme , chezscheme或chezscheme9.5 (取决于版本)。 在现代台式机上,此过程(包括测试)应少于5分钟。 Idris 2主要与Idris 1向后兼容,但有一些次要例外。 用户最明显的区别是,可能导致Idris 1程序...

    indiana:“印第安纳”计划库的端口

    该库的文档链接(http://www.cs.indiana.edu/chezscheme/match/)提供了详细信息,包括如何使用库中的函数和宏,以及如何构建和使用模式。通过这些文档,开发者可以学习如何有效地利用模式匹配来提升代码的可读性和...

    Little-Lisp学习:有关Lisp的一系列课程以及如何在Python中为其构建解释器

    不用再看了: 这些是用于学习Lisp编程语言(特别是Chez Scheme,可以通过brew install chezscheme进行brew install chezscheme )的注释和幻灯片。 我每周都会与随附的口译员一起更新这些课程。 Lisp会感到威吓吗?...

    Chez Scheme 的传说.pdf

    【Chez Scheme 的传说】深入解析 Chez Scheme 是一种著名的 Scheme 编译器,以其高效性能和优化的代码著称。在早期 Lisp 和 Scheme 的发展过程中,编译器的性能问题是导致 Lisp 失去竞争优势的主要因素之一。...

    chez scheme 手册

    Chez Scheme是一门高效的编程语言实现,属于Scheme语言家族的一个分支,它在速度上有着突出的表现。由于Chez Scheme由Kent Dybvig开发,它被描述为当前最快的Scheme应用之一,无论是运行速度还是编译速度都非常快。...

Global site tag (gtag.js) - Google Analytics