2.2.1 数据类型转换
Scheme提供了许多可以进行数据类型转换的过程。我们已经知道可以通过char-downcase 和 char-upcase过程来进字符大小写的转换。字符还可以通过使用char->integer来转换成整型,同样的整型也可以通过integer->char被转换成字符。(字符转换成整型得到的结果通常是这个字符的ascii码值。)
(char->integer #\d) => 100
(integer->char 50) => #\2
字符串可以被转换成等价的字符列表。
(string->list "hello") => (#\h #\e #\l #\l #\o)
其它的转换过程也都是一样的风格list->string, vector->list 和 list->vector。
数字可以转换成字符串:(number->string 16) => "16"
字符串也可以转换成数字。如果字符串不能转换成数字,则会返回#f。
(string->number "16")
=> 16
(string->number "Am I a not number?")
=> #f
string->number第二个参数是可选参数,指示以几进制来转换。
(string->number "16" 8) => 14
八进制的数字 16 等于 14。
Symbols也可以转换为字符串,反之亦然:
(symbol->string 'symbol)
=> "symbol"
(string->symbol "string")
=> string
2.1 其它数据类型
Scheme还包含了一些其它数据类型。一个是procedure(过程)。我们已经见过了许多过程了,例如,display, +, cons等。实际上,它们是一些承载了过程值的变量,过程本身内部的数值和字符并不可见:
cons
=> <procedure>
迄今为止我们所见过的这些过程都属于原始过程(系统过程),由一些全局变量来承载它们。用户还可以添加自定义的过程。
还有另外种数据类型是port端口。一个端口是为输入输出提供执行的通道。端口通常会和文件和控制台操作相关联。
在我们的”Hello,World!”程序中,我们使用display过程向控制台输出了一个字符串。display可以接受两个参数,第一个参数值是将输出的值,另一个值则表示了即将承载显示结果的输出port(端口)。
在我们的程序中,display的第二参数是隐式参数。这时候display会采用标准输出端口作为它的默认输出端口。我们可以通过调用current-output-port过程来取得当前的标准输出端口。我们可以更清楚的写出
(display "Hello, World!" (current-output-port))
2.2 S-expressions
所有这些已经被讨论过的数据类型可以被统一成一种通用的叫作s-expression(符号表达式或s-表达式)的数据类型(s代表符号)。像 42,#\c,(
1 .
2)
, #(
a
b
c)
, "Hello", (
quote
xyz)
, (
string->number
"16")
, 和 (
begin (
display
"Hello, World!") (
newline))
都是s-表达式。
分享到:
相关推荐
Fluent_Scheme简明中文手册-带书签.pdf
这是一本在国外比较有名的Scheme编程语言的入门教材。本教材适合任何对Scheme编程语言感兴趣的人阅读,尤其是有其他编程语言(特别是动态语言)编程经验,希望快速了解Scheme的不同点并且快速上手写点东西的人。
A unified scheme for adaptive stroke-based rendering.pdf
Routing Scheme for the IEEE-802.15.4-Enabled Wireless Sensor Networks
A-PUF-FSM-Binding-Scheme-for-FPGA-IP-Protection-and-Pay-per-Device-Licensing
A generalized conflict-free address scheme for arbitrary 2k-point memory-based FFT processors
A novel color image watermarking scheme in nonsampled contourlet-domain
scheme-lib scheme-lib 是一个scheme使用的库。目前支持android,其它平台在规划中。
A-Chaincode-Based-Scheme-for-Fingerprint-Feature-Extraction.pdf 链式码--指纹特征提取方法
一类传染病年龄模型的非标准数值格式_A non-standard numerical scheme for an age-of-infection epidemic model.pdf
《fluent——scheme简明中文手册》PDF格式 短小精炼的指导手册
在分类及预测任务中对高维类别(category)变量的预处理方法
HA-ColorSchemeDesigner09-yfy
Analysis of Lightweight Encryption Scheme for Fog-to-Things Communication-陈佳圣1
资源分类:Python库 所属语言:Python 资源全名:scheme-2.0.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
方案到js 方案->用方案编写的js编译器你好 :waving_hand: 这是用Scheme编写的Scheme编译器,可生成JavaScript。 我之前(在JavaScript中) 做到了。 您会发现,使用Scheme本身编写编译器意味着我可以有效地跳过解析...
这是适合有一定基础的初学者的SCHEME教程!
Yet Another Scheme Tutorial——Scheme入门教程 中文版。其中文地址为:http://deathking.github.io/yast-cn/。pdf只是于2018。08把上面的内容加了目录、标题序号,制作成了pdf。 本教程的目的在于给读者在Scheme...
An addition scheme applicable to time-delay integration (TDI) CMOS image sensor is proposed, which adds signals in the charge domain in the pixel array. A two-shared pixel structure adopting two-...