相信熟悉计算机语言的读者都很熟悉这个概念,它是指通过控制程序执行的次序实现制定的功能,诸如:顺序,分支,循环,……在编程语言中则体现为if-else,while,for,……等等, 遗憾的是,Alum并没有实现switch-case或match-case这样的结构以改进大量的if-else if-else,但对于一个以学习为目的的语言来说,问题不大。下面是关于Alum中流程控制的介绍:
...
提到函数这一概念,对于没有学习过计算机语言的人来说,可能会想到数学中的函数:一次函数,二次函数……,对于给定的自变量,具有一个唯一的函数值,在函数式编程中,同样存在这一概念,即:无副作用函数,但在过程式编程中,函数通常是有副作用的,也就是同样的输入,每次可能会得到不同的输出。在Alum中,一个函数是这样定义的:
1fun F(Pn: PTn, ...): RT expression
其中F是...
在前面的几章,我们了解了Alum的基本特性与语法,并能够用这种命令式编程的方式编写一些简单的程序,这一章,我们将介绍Alum的函数式编程特性。总体来说,Alum作为笔者的个人项目,还是一门非常简单的语言,但他也在向函数式语言发展,就现在而言,已经实现了匿名函数与高阶函数两个特性。
匿名函数
匿名函数也常称Lambda函数,顾名思义,它是一个没有名字的函数,遗憾的是,Alum的匿名函数目前...
作为一个Toy Language,Alum的生态极为弱小,这限制了我们编写一些比较复杂的程序,我们可以通过FFI(Foreign Function Interface,即:外部函数接口)用其他语言为Alum编写拓展,这里最推荐的是C语言,因为Alum的数据在内存布局上与C语言几乎一致,不需要转换的开销。可以通过extern直接引入外部函数。
extern关键字extern关键字是Alum...
在03-Types中我们介绍过,Alum中的T[N]也就是C语言中的T[]类型,其本质是一个指针,指向数组第一个元素的地址。我们通过实例来说明T[]的用法:
1234567891011121314151617181920212223242526272829303132333435363738394041424344$import "io.al"$import "...