中语言计算技术研究与发展联盟
舒生羽 wzyorg@gmail.com
中语言设计所有的设计努力都追求使得中语言程序的形式上达到如下目标:
一、口感上中语言的程序应该是朗朗上口,津津有味。
二、视觉上中语言的程序应该是一目了然,脉络分明。
三、思维上中语言的程序应该是行云流水,无滞无碍。
为此,中语言设计者总是力图让程序形式能够自然的呈现出计算过程,就像是用符号序列在呈现一种东西在流动。这必然在某些方面跟现有多数语言背道而驰,但却跟有些地方的记号有类似之处。
比如中语言的赋值符号是“->”而不是通常的“=”,这也跟有些地方的“<-”符号反向。因为中语言设计者认为这样更能呈现出值的运动和符号状态变化的演进过程,而没有其它两种的别扭和颠倒感,当然这也受限于设计者的经验和感觉。
这里要介绍的是中语言的逆唤算式,其中用到了一个逆唤符号,佢跟中语言里面“->”操作符有很大的相似性。这种相似不仅是形式上,也是意义上的,但是这里的意义是指值的流动感。逆唤算式是使唤算式
算力(佐1,佐2, …., )
的 反向,也就是
(佐1,佐2, …., ) +> 算力
而且在单个佐数的情况下可以省略括号。这种写法在某些程序内使用时能带来美妙观感。
下面就是一个使用逆唤算式的例子。
来 朴库.标准进出; 迭法: (几: 元)->(元)=几 % 2 == 0 ? 几 / 2 : 3 * 几 + 1; 道: ()->()= { 果: 元= 22; 打印文套("果 = %d\n", 果); 果 +> 迭法 +> 迭法 -> 果; 打印文套("果 = %d\n", 果); 果 +> 迭法 +> 迭法 +> 迭法 +> 迭法 -> 果; 打印文套("果 = %d\n", 果); 果 +> 迭法 +> 迭法 +> 迭法 +> 迭法 +> 迭法 +> 迭法 -> 果; 打印文套("果 = %d\n", 果); 果 +> 迭法 +> 迭法 -> 果; 打印文套("果 = %d\n", 果); 果 +> 迭法 -> 果; 打印文套("果 = %d\n", 果); }
程序的执行结果如下图所示:
官网源文件参考:http://www.zhongyuyan.org/ZStudy/超酷程序/逆唤算式.html