第三章:类型
类型描述了物体的性质。豫言中,每个物体都有其类型。
我们可以用类型声明来表示一个物体的类型。例如,我们可以标注结果的类型。
结果的类型是整数。
结果的定义是加使用于一使用于二。
类型标注是一个良好的编程习惯。在编译时,编译器会检查所有的类型标注,并协助你改正那些不合理的程序。例如,编译器会对如下的程序提示类型错误:
结果的类型是整数。
结果的定义是『你好』。
我们接下来介绍豫言的一些类型,以及对应的数据对象。
基础类型
基础类型包括整数,小数和字符串。
它们之间可以通过表示
或理解
等操作相互转换。这些函数默认使用阿拉伯数字,在豫言程序源码中才使用汉字数字。
结果二的类型是字符串。
结果二的定义是整数表示使用于一二三。
打印行使用于结果二。「:会打印 123:」
结果三的类型是整数。
结果三的定义是整数理解使用于『123』。
打印行使用于(整数表示使用于(「减」使用于结果三使用于一二三))。 「:会打印 0:」
提示:用「::」
包裹的字符为注释,编译器会完全忽略这些注释。
对子类型
对子类型是将两个类型结合成一对。一个对子则是把两个元素连结起来。
对子甲的类型是整数结合字符串。
对子甲的定义是一二三连结『你好』。
可以从对子中可以选取需要的第几个元素,注意:豫言中的序数一律从零开始。
乙的类型是整数。
乙的定义是对子甲中的第零个。「:乙的值是 123:」
丙的类型是字符串。
丙的定义是对子甲中的第一个。「:丙的值是 『你好』:」
我们也有三联对,四联对。
碰的类型是整数结合字符串结合整数。
碰的定义是一二三连结『你好』连结四五六。
杠的类型是整数结合字符串结合整数结合字符串。
杠的定义是一二三连结『你好』连结四五六连结『七八九』。
函数类型
函数从一个类型到另一个类型的变换,我们之前已经使用过以下的函数
整数表示的类型是从整数到字符串。
整数理解的类型是从整数到字符串。
打印行的类型是从字符串到有。
有
是一个基础类型,表示一些基础操作的返回类型。
函数也可以被定义,我们只需要定义当我们遇到了某个对象时,随后需要怎么做。例如(翻一番)
翻一番的类型是从整数到整数。
翻一番的定义是遇到了数随后「加」使用于数使用于数。
多参数函数是连续的从某些类型到最终类型的变换,比如
加的类型是从整数到从整数到整数。
乘的类型是从整数到从整数到整数。
在定义多参数函数的时候,我们要表明在我们连续遇到了某些事物的时候要怎么反应,比如
平方和的类型是从整数到从整数到整数。
平方和的定义是
遇到了数甲随后
遇到了数乙随后
让甲乙和为「加」使用于数甲使用于数乙随后
「乘」使用于甲乙和使用于甲乙和。
我们可以巧妙地使用换行,空格和缩进让我们的代码变得容易阅读。空格本身并不影响程序的意思。
模块类型
一个模块就是是一系列声明,一个模块的类型是一系列类型声明,比如
加法操作模块的类型是
「
翻一番的类型是从整数到整数。
平方和的类型是从整数到从整数到整数。
」。
加法操作模块的定义是
「
翻一番的类型是从整数到整数。
平方和的定义是
遇到了数甲随后
遇到了数乙随后
让甲乙和为「加」使用于数甲使用于数乙随后
「乘」使用于甲乙和使用于甲乙和。
」。
结语
豫言提供了完善的类型工具,我们强调的不是完全使用类型,也不是完全不用类型,而是根据可以根据情况来合理地使用类型系统。