View on GitHub

豫言

一款函数式中文编程语言

自建数据类型

我们看过了一些基础类型,比如整数和字符串,为了建模现实世界中更加复杂的数据类型,我们自己建立类型。

自建类型分两步:先说什么是一种类型,再说它有哪些东西。比如,我们可以定义五行。

先说五行是一种类型

五行是一种类型。

再说五行有哪些:

木是一种五行。
火是一种五行。
土是一种五行。
金是一种五行。
水是一种五行。

用一样的方法,我们可以定义颜色,

颜色是一种类型。
    青是一种颜色。
    赤是一种颜色。
    黄是一种颜色。
    白是一种颜色。
    黑是一种颜色。

对于数据进行计算

我们可以对自己定义的数据进行分析,并且对于每一种情况做出相应的反应。例如,我们可以写一个函数来获取五行的颜色, 通过分析遇到的五行,我们做出对应的判断:如果是我们知道的某一种,那么怎么办,或者如果是我们知道的另一种,那么要怎么办。

五行转颜色的类型是从五行到颜色。
五行转颜色的定义是
    遇到了一行随后
        分析一行随后
            如果是木那么青
            或者如果是火那么赤
            或者如果是土那么黄
            或者如果是金那么白
            或者如果是水那么黑。

同样的方法,我们可以把颜色转换成字符串,以供打印。

颜色转字符串的类型是从颜色到字符串。
颜色转字符串的定义是
    遇到了颜色随后
        分析颜色随后
            如果是青那么『青』
            或者如果是赤那么『赤』
            或者如果是黄那么『黄』
            或者如果是白那么『白』
            或者如果是黑那么『黑』。

打印行使用于(颜色转字符串使用于白)。 「:会打印 白:」
打印行使用于(颜色转字符串使用于(五行转颜色使用于土))。 「:会打印 黄:」

带参数的数据

构建自定义数据类型的时候我们获取想带上参数,这时候,可以构建一个函数。比如,表示时间:

时间是一种类型。
〇点整是一种从整数到时间。
〇点半是一种从整数到时间。

以及时间上的计算

从〇到〇的分钟数的类型是从时间到从时间到整数。
从〇到〇的分钟数的定义是
    遇到了开始时间随后
    遇到了结束时间随后
        分析开始时间随后
            如果是「开始时刻」点整那么
                (分析结束时间随后
                    如果是「结束时刻」点整那么
                        (结束时刻减开始时刻)乘六零
                    或者如果是「结束时刻」点半那么
                        ((结束时刻减开始时刻)乘六零)加三零
                )
            或者如果是「开始时刻」点半那么
                (分析结束时间随后
                    如果是「结束时刻」点整那么
                        ((结束时刻减开始时刻)乘六零)减三零
                    或者如果是「结束时刻」点半那么
                        (结束时刻减开始时刻)乘六零
                )。

打印行使用于(整数表示使用于(从三点半到五点整的分钟数))。 「:会打印 90:」