Scheme 语言概要(上)
- 格式:docx
- 大小:67.11 KB
- 文档页数:14
Scheme如何记忆Scheme语言是一种基于Lisp的函数式编程语言,具有简洁、优雅的语法和强大的表达能力。
对于初学者来说,Scheme的记忆可能是一个挑战。
然而,通过一些技巧和方法,我们可以更容易地掌握Scheme语言的特点和用法。
了解Scheme的基本概念在学习Scheme语言之前,需要了解一些基本概念。
首先,Scheme是一种基于符号表达式的语言,它以括号表达式(S表达式)作为语法基础。
另外,Scheme是一种函数式编程语言,函数在Scheme中被视为一等公民,可以像其他数据一样进行操作。
掌握Scheme的数据结构Scheme中最基本的数据结构包括数字、字符串、布尔值和列表。
数字可以是整数或实数,字符串用双引号括起来,布尔值为#t和#f,表示真和假。
列表是Scheme中最常用的数据结构,使用括号括起来,元素之间用空格分隔。
熟悉Scheme的基本语法了解Scheme的基本语法是记忆Scheme的关键。
在Scheme中,括号是用于表示函数应用和代码块的重要符号。
每个括号表达式由一个操作符和零个或多个操作数组成,操作符的位置在最左边。
理解Scheme的函数定义和调用函数在Scheme中使用define关键字进行定义,使用lambda关键字表示匿名函数。
函数调用的语法是将函数名放在括号中,后面跟着参数列表。
调用函数时,Scheme采用应用序求值规则,即先求值参数,然后将其传递给函数。
探索Scheme的递归和高阶函数递归是函数式编程的重要特性,Scheme语言天生支持递归。
通过递归,我们可以实现对数据结构的高效处理。
此外,Scheme还支持高阶函数,即可以接受函数作为参数或返回函数的函数,这种特性使得Scheme可以实现更为灵活和抽象的编程。
深入了解Scheme的惰性求值Scheme是一种惰性求值语言,它仅在需要时才求值表达式。
这种特性可以提高程序的效率和简洁性,但也需要注意避免潜在的副作用。
了解Scheme的惰性求值规则有助于更好地理解和记忆Scheme的行为。
Scheme是一种函数式编程语言,其语法主要包括以下几个部分:
1. 表达式:Scheme的基本语法结构是由一系列的表达式组成,每个表达式都被一对括号包围。
一个基
本的表达式由一个操作符和零个或多个操作数组成。
例如,(+ 1 2)表示对1和2进行求和,"+"是操作符,"1"和"2"是操作数。
2. 数据类型:Scheme中有多种数据类型,包括整数、浮点数、布尔值、字符、字符串以及列表等。
例
如,'(1 2 3)表示一个包含三个整数元素的列表。
3. 函数:在Scheme中,函数是一等公民,可以作为其他函数的参数和返回值。
函数可以通过lambda表
达式定义,例如,(lambda (x y) (+ x y))表示一个接受两个参数x和y,返回它们的和的函数。
4. 变量:在Scheme中,变量用于存储值,可以使用赋值语句来给变量赋值。
例如,(define x 10)表示
将变量x的值设置为10。
5. 控制结构:Scheme的控制结构包括条件语句、循环语句等。
例如,(if <condition> <true-
expression> <false-expression>)表示当条件为真时执行true-expression,否则执行false-
expression。
6. 宏:Scheme允许使用宏定义自己的语法结构。
宏可以用来简化复杂的语法结构或者扩展语言的语
法。
以上是Scheme语法的一些基本组成部分,更多详细信息可以查阅Scheme的教程或者相关书籍。
数据库中的Schema是什么?翻译自:在数据库中,schema(发音“skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas and schemata都可以作为复数形式。
模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。
数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系以上是模式图的一个简单例子,显示了三个表及其数据类型、表之间的关系以及主键和外键,以下是数据库模式的一个更复杂的例子。
在这种情况下,模式图分为四个部分:(1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等(2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等(3)Inventory(库存):所有产品的细节。
在这里,产品是电影,所以它包含电影标题,类别,演员等数据。
(4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。
Schema和DataBase是否等同?涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。
取决于数据库供应商对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式(1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。
(2)但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。
语言学imageschema定义
Image schema是认知语言学的一个概念,指的是在人类认知中普遍存在的一类基本、抽象的心理图像或经验模式。
这些模式在我们学习和使用语言时发挥着重要的作用。
Image schema可以被看作是人类认知的基本构建模块,用于描述和理解一系列的概念、动作、空间关系和情感。
它们可以在不同的语言和文化中具有共同的特征,因此对于翻译、跨文化交流和语言习得等方面有着重要的意义。
常见的一些image schema包括:前后(source-path-goal)形式,指的是我们对运动和方向感的认知;容器(container)形式,指的是我们对物体在空间中的包裹、遮挡和填充的认知;边界(boundary)形式,指的是我们对空间和概念边界的认知等等。
Image schema的概念来源于认知科学和认知心理学领域的研究,通过对形式和物质之间的联系进行建模,进一步揭示了语言和认知之间的紧密关系。
在语言学研究中,image schema的理论框架被用来解释语言的结构、意义和使用方式等方面的问题。
scheme语言
Scheme是一种函数式编程语言,它遵循Lisp编程风格,并由Gerald Jay Sussman和Guy L. Steele Jr.在1975年开发。
Scheme是一种简洁而优雅的编程语言,它具有一些特殊的特性,如动态类型、动态作用域、递归和尾递归等。
Scheme具有强大的函数和过程的支持,它允许将函数作为参数传递和返回,这种特性被称为高阶函数。
此外,Scheme还有一种强大的宏系统,允许用户定义自己的语法扩展。
与其他编程语言相比,Scheme语言的语法非常简单,它使用括号表示函数调用,并使用前缀表示法。
例如,下面是一个使用Scheme定义的函数,计算一个数的平方:
```scheme
(define (square x)
(* x x))
```
Scheme提供了许多基本的数学函数和过程,例如加法、乘法、除法等。
此外,它还提供了列表处理和递归的简便方法。
Scheme是一种高度灵活和可扩展的语言,它具有清晰的语法和简单的语义。
它被广泛应用于教学和研究领域,也被用作脚本语言和开发工具。
schema规则[schema规则],以中括号内的内容为主题,写一篇1500-2000字文章,一步一步回答首先,让我们来了解一下什么是[schema规则]。
Schema规则是一种定义数据结构的标记语言,用于定义数据实体之间的关系和属性。
它用于描述数据的结构、数据类型、约束条件和关系等细节。
这种规则可以被应用于各种领域,例如数据库设计、API设计、网络通信等。
在本文中,我们将深入探讨[schema规则]的相关细节,包括它的基本概念、语法、常见的应用场景以及如何使用它来构建数据结构。
让我们一起来了解吧!1. 什么是[schema规则][schema规则]是一种用于定义数据结构的标记语言。
它定义了数据实体之间的关系和属性,以及它们之间的约束和限制。
通过使用[schema规则],我们可以确保数据在应用程序中的一致性和完整性。
具体来说,它包括以下几个方面:- 数据结构:[schema规则]定义了数据实体的结构,包括属性名称、属性类型和属性之间的关系。
- 数据类型:[schema规则]规定了每个属性的数据类型,例如整数、字符串、日期等。
- 约束条件:[schema规则]可以定义属性的限制条件,例如必填、唯一性和范围等。
- 关系:[schema规则]可以定义实体之间的关系,例如一对一、一对多和多对多等。
通过使用[schema规则],我们可以确保数据的一致性和有效性,并在应用程序中建立一个具有良好可维护性的数据结构。
2. [schema规则]的语法[schema规则]的语法通常有一定的标准和约定,下面是一个简单的示例:{"type": "object","properties": {"name": {"type": "string"},"age": {"type": "integer"},"email": {"type": "string","format": "email"}},"required": ["name", "email"]}在上面的示例中,我们定义了一个对象类型的[schema规则],包含了三个属性:name、age和email。
数据库中的Schema是什么?数据库中的Schema是什么?schema英 [ˈski:mə] 美 [ˈskimə] n. 概要,计划,图表;⽤数据库术语来说,模式(读作“ skee-muh”或“ skee-mah”)是的组织和结构。
两个模式和图式可以作为复数形式。
模式包含模式对象,可以是,,数据类型,,,,,等。
数据库模式可以⽤可视化的图表表⽰,该图表显⽰了数据库对象及其相互之间的关系。
表⽰⼩型三表数据库的基本架构图。
上⾯是模式图的简单⽰例。
它显⽰了三个表,以及它们的数据类型,表之间的关系以及它们的主键和外键。
这是数据库架构的更复杂的⽰例:Sakila⽰例数据库的数据库架构图。
在这种情况下,架构图已分为四个部分:客户数据:与客户有关的数据,例如其姓名,地址等业务:开展业务所需的数据,例如⼈员,商店位置,付款明细等库存:所有产品的详细信息。
在这种情况下,产品是电影,因此它包含诸如电影标题,其类别,演员等数据。
视图:⽤于评估的数据的特殊视图。
因此,通过查看这些架构图,我们可以继续创建数据库。
实际上,MySQL Workbench允许您。
然后,您可以。
您甚⾄可以。
模式和数据库是同⼀件事吗?当涉及到数据库时,关于模式有很多困惑。
经常会出现⼀个问题,即模式和数据库之间是否存在差异,如果存在差异,会有什么区别。
取决于供应商造成混乱的部分原因是数据库系统倾向于以⾃⼰的⽅式处理模式。
在指出,物理,"⼀个模式是与数据库的代名词"。
因此,模式和数据库是同⼀件事。
但是,指出某些对象可以存储在数据库中,⽽不能存储在模式中。
因此,模式和数据库是两件事。
根据此,架构是数据库内部的⼀个单独实体。
因此,它们是两件事。
因此,根据所使⽤的RDBMS,架构和数据库可能相同,也可能不同。
SQL标准呢?在定义了⼀个模式作为 "描述符的持久性,命名集合"。
如果您之前感到困惑,希望我不仅让事情变得更糟...⼴义造成混淆的另⼀个原因可能是由于术语图式具有如此⼴泛的含义这⼀事实。
语言学imageschema定义篇一:标题: 语言学中的imageschema定义及其应用正文:imageschema是一种在语言学中广泛应用的概念,它指的是人们对于特定情境下的图像或符号的自动识别和理解能力。
imageschema不仅可以应用于自然语言处理中的文本分类、情感分析、问答系统等任务,还可以用于机器翻译、问答系统、社交媒体分析等领域。
本文将详细介绍imageschema的定义、特征、分类和应用。
1. 定义imageschema是一种基于图像识别和符号理解的神经机制,它涉及到人类大脑的一些区域,如前额叶、顶叶和颞叶等。
imageschema可以被看作是一种对符号和图像的自适应学习,它能够自动地识别和理解特定情境下的图像或符号。
2. 特征imageschema的特征包括以下几个方面:- 图像符号的相似性:imageschema能够自动识别和比较不同符号之间的相似性,例如颜色、形状、大小、方向等。
- 情境的相关性:imageschema能够识别和预测特定情境下的图像或符号,例如广告、新闻、社交媒体等。
- 上下文的感知:imageschema能够感知和理解上下文信息,例如句子的语法结构、意义背景等。
- 自我识别:imageschema能够自动识别和理解自己所经历的情境和图像,例如拍照、绘画等。
3. 分类imageschema可以分为多个类别,包括:- 视觉符号相似性:这种类别的imageschema是基于图像符号之间的相似性,例如颜色、形状、大小等。
- 情境相关性:这种类别的imageschema是基于图像符号和情境之间的相关性,例如广告、新闻、社交媒体等。
- 自我识别:这种类别的imageschema是基于图像符号和自我识别之间的相关性,例如拍照、绘画等。
4. 应用imageschema在语言学中的应用领域非常广泛,包括自然语言处理、机器翻译、情感分析、问答系统等任务。
例如,在机器翻译中,imageschema可以用于自动识别和比较不同语言之间的图像或符号,从而实现机器翻译任务。
简介:Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。
作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。
本文分为上、下两部分来介绍scheme 语言。
一.Scheme语言的特点Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。
它是一个小巧而又强大的语言,作为一个多用途的编程语言,它可以作为脚本语言使用,也可以作为应用软件的扩展语言来使用,它具有元语言特性,还有很多独到的特色,以致于它被称为编程语言中的"皇后"。
下面是洪峰对Scheme语言的编程特色的归纳:词法定界(Lexical Scoping)∙动态类型(Dynamic Typing)∙良好的可扩展性∙尾递归(Tail Recursive)∙函数可以作为值返回∙支持一流的计算连续∙传值调用(passing-by-value)∙算术运算相对独立本文的目的是让有编程基础(那怕是一点点)的朋友能尽快的掌握Scheme语言的语法规则,如果您在读完本文后,发现自己已经会用Scheme语言了,那么我的目的就达到了。
回页首二.Scheme语言的标准与实现R5RS (Revised(5) Report on the Algorithmic Language Scheme)Scheme语言的语法规则的第5次修正稿,1998年制定,即Scheme 语言的现行标准,目前大多数Scheme语言的实现都将达到或遵循此标准,并且几乎都加入了一些属于自己的扩展特色。
Scheme语言概要(上)Scheme语言是LI SP语言的一个方言(或说成变种),它诞生于1975年的M IT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Schem e语言。
3评论宋国伟 (gwsong***********)吉林省德惠市信息中心2003 年12 月01 日∙内容form嵌套Scheme语言中允许form的嵌套,这使它可以轻松的实现复杂的表达式,同时也是一种非常有自己特色的表达式。
下图示意了嵌套的稍复杂一点的表达式的运算过程:变量定义可以用def ine来定义一个变量,形式如下:(define变量名值)如: (define x 123) ,定义一个变量x,其值为123。
更改变量的值可以用set!来改变变量的值,格式如下:(set! 变量名值)如: (set! x "hello") ,将变量x的值改为"hello"。
Scheme语言是一种高级语言,和很多高级语言(如pytho n,perl)一样,它的变量类型不是固定的,可以随时改变。
回页首四.数据类型1. 简单数据类型逻辑型(boolea n)下图表示了由pairs定义形成的列表:Scheme语言概要(下)Scheme语言是LI SP语言的一个方言(或说成变种),它诞生于1975年的M IT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Schem e语言。
校园英语 / 翻译探究Schema Theory and Translation新疆师范大学/冉雨蒙The word “schema” derives from the ancient Greek. The famous philosopher Kant firstly introduced this concept into philosophy domain. In his view, when human beings try to understand the new information, they will match the new information with what they have learned before, or the knowledge existing in the brain, thus, the schema was constructed (Kant,1781). In the twentieth century, the famous psychologist Piaget brought the concept into the field of cognitive psychology. According to his understanding, schema is the way in which people think and understand the world. It is a kind of mental activity, which plays a vital role in recognizing new things and it will developed with the development of human being’s cognition system (Wang,2008). The Schema Theory also draws the attention of scholars in the translation circle. According to Zhang Meigang (2002), the schema is formed only when the translator fully understanding and analyzing the information in the source language. Zhou Hongmin (2003) thought that when the translator try to fully understand the information in the source context, the content schema will formed. While, in the translation process, the language schema will be constructed.The translation process is the process in which the source language and the information in conveys will be transformed into the target language. It is not only a transformation of vocabulary and syntactic structure, but a transmission of information. Hence,文化特有的。
第八章社会语言学1.语言变异语言的使用属于社会现象,语言的使用会因言语社区、地域、社会团体、甚至个人的不同而不同。
社会语言学(sociolinguistics)是把语言置于社会环境中来研究语言,从而揭示在不同的社会语境中语言变化的本质特征和社会意义。
1.1言语社区(speech community)言语社区可以定义为构成一个社团的一群人,他们具有相同的语言或具有同一语言中某一特定的变体。
言语社区的一个重要特点是同一言语社区的人使用同一语言或同一语言中的不同的变体进行交际,而且他们对他们所使用的语言的规范具有类似的态度。
社会地位、经济地位、受教育程度、职业、年龄等因素不同的人所使用的语言往往带有他们各自言语社区的烙印。
1.2言语变体(speech variety)言语变体(speech variety),有称之为语言变体,是语言使用者所使用的具有一定区别性特征的变体。
这些不同的特征主要反映在发音、句法规则或词汇上。
言语变体作为一种中性词语可以指标准语(standard language)、方言(dialect)、洋径浜语(pidgin)、克里奥尔语(creole)等,可以指同一语言的地域性或民族性变体,如英语中的澳大利亚英语、黑人英语等,也可以指同属一种语言的功能性言语变体,如法律语体等。
社会语言学家尤其是对地域变体(又称地域方言)、社会变体(又称社会方言)和功能变体(又称语域)感兴趣。
言语变体无论其具有何种社会属性,在社会语言学家看来它们之间没有高低之分、优劣之别,因为它们都是体系的。
1.3地域变异(regional variation)地理障碍如高山,海洋,空间的距离等是造成语言地域变异的主要原因,除此之外,对自己地方语的“忠诚”以及对语言变化的抵触情绪也是形成地域方言的原因。
虽然语言的地域变异反映在发音、词汇和句法上,但是语言地域性变异的最显著的特征是地域口音(accent)。
由于地域变体的存在给跨地区的交际造成障碍,语言规划(language planning)应运而生。
schema翻译Schema(模式)是一种用于描述数据结构的概念工具,它可以用来定义数据库中的表、字段、关系和约束等。
Schema可以提供数据的组织结构以及数据之间的关联方式。
下面是一些常见的Schema用法和相应的中英文对照例句:1. 创建Schema:- SQL: CREATE SCHEMA schema_name;- 例句:创建一个名为"my_schema"的Schema。
- CREATE SCHEMA my_schema;2. 创建表:- SQL: CREATE TABLE schema_name.table_name (column1 datatype, column2 datatype, ...);- 例句:在Schema "my_schema"下创建一个名为"my_table"的表。
- CREATE TABLE my_schema.my_table (id INT, name VARCHAR(50));3. 创建外键约束:- SQL: ALTER TABLE schema_name.table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table_name (referenced_column_name);- 例句:在表"orders"中,为"customer_id"列添加外键约束,引用"customers"表的"customer_id"列。
- ALTER TABLE my_schema.orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES my_schema.customers (customer_id);4. 修改表结构:- SQL: ALTER TABLE schema_name.table_name MODIFY COLUMN column_name datatype;- 例句:在表"my_table"中,将"age"列的数据类型修改为INT。
Scheme 语言概要(上)
宋国伟 (gwsong52@)吉林省德惠市信息中心
简介: Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。
作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。
本文分为上、下两部分来介绍scheme 语言。
一.Scheme语言的特点
Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是显为人知。
但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。
它是一个小巧而又强大的语言,作为一个多用途的编程语言,它可以作为脚本语言使用,也可以作为应用软件的扩展语言来使用,它具有元语言特性,还有很多独到的特色,以致于它被称为编程语言中的"皇后"。
下面是洪峰对Scheme语言的编程特色的归纳:
∙词法定界(Lexical Scoping)
∙动态类型(Dynamic Typing)
∙良好的可扩展性
∙尾递归(Tail Recursive)
∙函数可以作为值返回
∙支持一流的计算连续
∙传值调用(passing-by-value)
∙算术运算相对独立
本文的目的是让有编程基础(那怕是一点点)的朋友能尽快的掌握Scheme语言的语法规则,如果您在读完本文后,发现自己已经会用Scheme语言了,那么我的目的就达到了。
二.Scheme语言的标准与实现
R5RS (Revised(5) Report on the Algorithmic Language Scheme)
Scheme语言的语法规则的第5次修正稿,1998年制定,即Scheme语言的现行标准,目前大多数Scheme 语言的实现都将达到或遵循此标准,并且几乎都加入了一些属于自己的扩展特色。
Guile (GNU's extension language)
Guile是GNU工程的一个项目,它是GNU扩展语言库,它也是Scheme语言的一个具体实现;如果你将它作为一个库打包,可以把它链接到你的应用程序中去,使你的应用程序具有自己的脚本语言,这个脚本语言目前就是Scheme语言。
如此,即可以执行命令guile,进入guile>提示符状态,输入调试Scheme程序代码了,本文的所有代码都是在guile下调试通过。
其它实现
除了Guile外,Scheme语言的实现还有很多,如:GNU/MIT-Scheme,SCI,Scheme48,DrScheme 等,它们大多是开源的,可以自由下载安装使用,并且跨平台的实现也很多。
你会发现既有象basic的Scheme语言解释器,也有将Scheme语言编译成C语言的编译器,也有象JAVA那样将Scheme语言代码编译成虚拟机代码的编译器。
三.基本概念
一个form 也可以是一个表达式,一个变量定义,也可以是一个过程。
form嵌套
Scheme语言中允许form的嵌套,这使它可以轻松的实现复杂的表达式,同时也是一种非常有自己特色的表达式。
下图示意了嵌套的稍复杂一点的表达式的运算过程:
变量定义
可以用define来定义一个变量,形式如下:
(define 变量名值)
如:(define x 123) ,定义一个变量x,其值为123。
更改变量的值
可以用set!来改变变量的值,格式如下:
(set! 变量名值)
如:(set! x "hello") ,将变量x的值改为"hello" 。
Scheme语言是一种高级语言,和很多高级语言(如python,perl)一样,它的变量类型不是固定的,可以随时改变。
四.数据类型
从上面的操作中可以看出来,只要not后面的参数不是逻辑型,其返回值均为#f。
数字型(number)
它又分为四种子类型:整型(integer),有理数型(rational),实型(real),复数型(complex);它们又被统一称为数字类型(number)。
如:复数型(complex) 可以定义为(define c 3+2i)
实数型(real)可以定义为(define f 22/7)
有理数型(rational)可以定义为(define p 3.1415)
整数型(integer) 可以定义为(define i 123)
Scheme语言中,数字类型的数据还可以按照进制分类,即二进制,八进制,十进制和十六进制,在外观形式上它们分别以符号组合#b、#o、#d、#x 来作为表示数字进制类型的前缀,其中表示十进制的#d 可以省略不写,如:二进制的#b1010 ,八进制的#o567,十进制的123或#d123,十六进制的#x1afc 。
Scheme语言的这种严格按照数学定理来为数字类型进行分类的方法可以看出Scheme语言里面渗透着很深的数学思想,Scheme语言是由数学家们创造出来的,在这方面表现得也比较鲜明。
字符型(char)
Scheme语言中的字符型数据均以符号组合"#\" 开始,表示单个字符,可以是字母、数字或"[ ! $ % & * + - . / : %lt; = > ? @ ^ _ ~ ]"等等其它字符,如:
#\A 表示大写字母A,#\0表示字符0,
其中特殊字符有:#\space 表示空格符和#\newline 表示换行符。
符号型(symbol)
符号类型是Scheme语言中有多种用途的符号名称,它可以是单词,用括号括起来的多个单词,也可以是无意义的字母组合或符号组合,它在某种意义上可以理解为C中的枚举类型。
看下面的操作:
字符串中出现引号时用反斜线加引号代替,如:"abc\"def" 。
点对(pair)
我把它译成"点对",它是一种非常有趣的类型,也是一些其它类型的基础类型,它是由一个点和被它分隔开的两个所值组成的。
形如:(1 . 2) 或(a . b) ,注意的是点的两边有空格。
这是最简单的复合数据类型,同是它也是其它复合数据类型的基础类型,如列表类型(list)就是由它来实现的。
按照Scheme语言说明中的惯例,以下我们用符号组合"=>" 来表示表达式的值。
它用cons来定义,如:(cons 8 9) =>(8 . 9)
其中在点前面的值被称为car ,在点后面的值被称为cdr,car和cdr同时又成为取pair的这两个值的过程,如:
由上可见,a本来是我们上面定义的点对,最后形成的却是列表。
事实上列表是在点对的基础上形成的一种特殊格式。
再看下面的代码:
上在的操作中用到的cadr,cdddr等过程是专门对PAIR型数据再复合形成的数据操作的过程,最多可以支持在中间加四位a或d,如cdddr,caaddr等。
下图表示了由pairs定义形成的列表:
这个列表可以由pair定义为如下形式:
Scheme语言在类型定义中有比较严格的界定,如在C语言等一些语言中数字0来代替逻辑类型数据False,在Scheme语言中是不允许的。
在Scheme语言中如此众多的类型判断功能,使得Scheme语言有着非常好的自省功能。
即在判断过程的参数是否附合过程的要求。
算术运算
五.过程定义
此时过程add只在fix过程内部起做用,这事实上涉及了过程和变量的绑定,可以参考下面的关于过程绑定(let,let* 和letrec)的介绍。
过程是初学者难理解的一个关键,随着过程参数的增加和功能的增强,过程的内容变得越来越复杂,小括号也会更多,如果不写出清晰的代码的话,读代码也会成为一个难题。
熟悉了scheme 基本概念、数据类型和过程(函数)后,下一部分我们来学习scheme 的结构、递归调用和其他扩展功能。