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-表达式。
分享到:
相关推荐
2. Scheme基础,这将包括Scheme的语法、数据类型、控制结构、函数定义、以及如何使用Scheme语言进行计算。 3. 用户自定义函数(UDFs)的介绍,包括UDF的结构、如何在Fluent中加载和卸载UDFs,以及如何在UDF中使用...
这是一本在国外比较有名的Scheme编程语言的入门教材。本教材适合任何对Scheme编程语言感兴趣的人阅读,尤其是有其他编程语言(特别是动态语言)编程经验,希望快速了解Scheme的不同点并且快速上手写点东西的人。
由于提供的文件内容片段实际上并没有提供关于标题“fluent——scheme简明中文手册”的具体内容,而是呈现了一些无序的数字和章节标题,我们无法直接基于这些片段生成详尽的知识点。但我们可以根据手册的标题,以及...
局部敏感哈希(Locality-sensitive hashing,简称LSH)是一种在数据挖掘领域中广泛应用于高维空间近邻搜索问题的技术。2004年的这篇论文介绍了一种基于p-稳定分布的局部敏感哈希方案,该方案提出了一种新型的哈希...
4. **交互机制**: 设计Java和Scheme之间的数据交换机制,如通过参数传递和返回值。 **应用场景** Scheme-Lib在Android上的应用可能包括: - **游戏逻辑**: 用于编写复杂的游戏规则和AI算法。 - **动态配置**: 在...
- **Disjointness of Types**(类型分离性):不同类型的数据之间是完全分离的,这意味着不同类型的值不能相互转换。 - **Storage Model**(存储模型):描述了Scheme中数据的存储方式,如堆栈和堆的使用。 - **...
在机器学习和数据分析领域,高维类别(categorical)属性,即那些具有大量不同值的分类变量,常常会给模型训练带来挑战。这类问题通常被称为“高基数”(high cardinality)问题,因为“基数”指的是类别变量的不同...
CorSegRec: A Topology-Preserving Scheme for Extracting Fully-Connected Coronary Arteries from CT Angiography CorSegRec:拓扑保持 全连通提取方案 冠状动脉CT血管造影
《Teach Yourself Scheme in Fixnum Days》是一本详尽的教程,旨在帮助读者在有限的时间内掌握Scheme语言的基础及进阶知识。此书由Dorai Sitaram撰写,并且在网络上部分中文翻译已经存在(参考链接:...
- Scheme语言的语法简洁,对数据的处理能力强,支持高级数据类型如列表和符号。 - 它是一种解释型语言,通常具有垃圾回收机制,易于学习和使用。 - Scheme语言广泛应用于教学和研究,因其简洁的语法和强大的表达...
- 表(list)操作:Scheme中的表是一种基本的数据结构,教程会介绍如何创建、访问和操作表,如list、cons、car、cdr等。 - 闭包和过程:详细解释过程的定义和闭包的概念,以及如何创建和使用过程。 - 字符串操作:...
4. Fluent-Scheme-UDFs 接口 Fluent Scheme 提供了一个 UDFs(User-Defined Functions)接口,允许用户定义自己的函数。该接口包括: * 数据交换:通过使用 `udf` 函数,可以在 Fluent 和 Scheme 之间交换数据。 *...
《HA-ColorSchemeDesigner09-yfy:探索配色艺术与专业工具的奥秘》 在数字设计领域,色彩搭配是至关重要的一环,它能够直接影响到用户对产品的第一印象和使用体验。"HA-ColorSchemeDesigner09-yfy" 是一款专为设计...
《MIT-Scheme的基本使用教程》 MIT-Scheme是一款基于R5RS标准的Scheme实现,它以其简洁、高效和可扩展性著称。本教程将详细讲解如何使用MIT-Scheme进行编程,包括在命令行环境和Emacs编辑器下的操作。 一、MIT-...
- **彩色图像归一化**:通过对图像颜色空间进行转换,使得不同设备之间能够一致地显示图像。 - **HSV遮罩**:通过在HSV颜色空间中调整水印嵌入强度,实现对水印的优化隐藏。 #### 技术细节 - **构建几何不变空间**...
### Scheme语言基础教程 #### Scheme语言概述 Scheme作为MIT基于LISP语言开发的一种变体,具有独特的地位。它不仅保留了LISP的核心理念——一种功能性的编程方式,而且通过简化和标准化,使得学习和使用更加便捷...
- 解释了如何在Scheme中表示数字、字符串和其他基本数据类型。 - **1.4.2 Variable References(变量引用)** - 说明了如何在代码中引用变量。 - **1.4.3 Special Form Syntax(特殊形式语法)** - 讨论了Scheme...
### Lisp语言教程(Scheme)知识点概述 #### 一、Scheme语言简介 - **起源与发展**:Scheme语言作为Lisp家族的一员,诞生于1975年的麻省理工学院(MIT)。尽管它没有像C++、Java这样的语言在商业领域得到广泛应用...
虽然教程中未明确提及,参与Scheme相关的在线论坛、社区或项目可以加速学习进程,获取实际经验并与其他开发者交流心得。 综上所述,《Scheme自学教程》旨在为有一定编程基础的初学者提供一个快速入门的平台,通过...