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.exe,windows 安装包,国外下载比较困难,所以上传一份;如果条件允许,可以从官网下载最新版本:https://github.com/cisco/ChezScheme/releases
ChezScheme的window安装程序,(官网安装https://cisco.github.io/ChezScheme/),由于官网在国外,本人当时下了很半天,希望能帮助到下载慢的朋友们
scheme编译器最新版,Windows下直接安装即可运行,sicp刷题必备。祝大家早日学到sicp之精髓~
chezScheme在GitHub上面的官方版安装包。Windows
传说中最快的scheme语言的解释器的实现,也带有编译功能,提供了优秀的REPL环境 可以用来配合SICP(《计算机程序的结构与解释》)的学习,也可以用来入门函数式编程 可以说是很实用的工具
chez-exe:ChezScheme自托管可执行文件该项目的目标是产生独立的可执行文件,这些文件是完整的ChezScheme系统并包含计划程序。 这是通过将ChezScheme引导文件和方案程序嵌入可执行文件来实现的。 Chez-exe将...
ChezScheme是一个高效、优化的Scheme系统实现,其特点包括了高效的解释执行、编译至机器码的能力、对尾调用优化的支持以及对SRFI标准库的广泛支持。由于ChezScheme的速度和功能,它经常被推荐给初学者和经验丰富的...
Chez Scheme既是一种编程语言,又是该语言的实现,带有支持工具和文档。 作为“(R6RS)描述的语言的超集,Chez计划支持Scheme的所有标准功能,包括一流的程序,对尾部调用的正确处理,延续,用户定义的记录,库,...
方案库 鸭库scheme-lib是一个计划使用的库。目前支持android osx linux windows,其他平台在规划中。 官方主页: ://evilbinary.github.io/scheme-lib/ QQ群:Lisp兴趣小组239401374 安装编译 Linux ...
Idris 2是纯函数式编程语言,具有一流的类型。 Idris 2 Idris 2是纯函数式编程语言,具有一流的...这通常是方案之一,chezscheme或chezscheme9.5(取决于版本)。 在现代台式机上,此过程(包括测试)应花费更少的时间
这通常是scheme , chezscheme或chezscheme9.5 (取决于版本)。 在现代台式机上,此过程(包括测试)应少于5分钟。 Idris 2主要与Idris 1向后兼容,但有一些次要例外。 用户最明显的区别是,可能导致Idris 1程序...
该库的文档链接(http://www.cs.indiana.edu/chezscheme/match/)提供了详细信息,包括如何使用库中的函数和宏,以及如何构建和使用模式。通过这些文档,开发者可以学习如何有效地利用模式匹配来提升代码的可读性和...
不用再看了: 这些是用于学习Lisp编程语言(特别是Chez Scheme,可以通过brew install chezscheme进行brew install chezscheme )的注释和幻灯片。 我每周都会与随附的口译员一起更新这些课程。 Lisp会感到威吓吗?...
【Chez Scheme 的传说】深入解析 Chez Scheme 是一种著名的 Scheme 编译器,以其高效性能和优化的代码著称。在早期 Lisp 和 Scheme 的发展过程中,编译器的性能问题是导致 Lisp 失去竞争优势的主要因素之一。...
Chez Scheme是一门高效的编程语言实现,属于Scheme语言家族的一个分支,它在速度上有着突出的表现。由于Chez Scheme由Kent Dybvig开发,它被描述为当前最快的Scheme应用之一,无论是运行速度还是编译速度都非常快。...