现在的Kernel FP已经支持列表语法和操作符语法了。
列表语法为[1,2,3,4,5]。原来是需要写成list 1 (list 2 (list 3 (list 4 (list 5 empty))))的。不过后面这种写法仍然是支持的。
操作符可以自定义,凡是仅由“+-*/%<>=!&^|~@#$?”构成,而又不是“|”和“=”的记号都可以视为二元操作符。如果是+、-、*、/、%、<、<=、>、>=、==、!=、^、&&和||的话,优先级跟C++一样。如果是其他操作符,那么优先级一致而且最低。
因为操作符也是个函数,因此将操作符作为函数使用的时候只需要加一对括号就可以了,不过中间不可以有空格。所以我们就可以定义“+”并写出下面的代码:
1 def (+) = iadd
2 def (+) = fadd
3 def (+) = concat
4 def main102 = (+) 1 2
5 def main103 = (+) 1.0 2.0
6 def main104 = (+) "Genius" " Vczh!"
7 def main105 = 1 + 2
8 def main106 = 1.0 + 2.0
9 def main107 = "Genius" + " Vczh!"
下面是执行结果:
1 main102返回值:3
2 main103返回值:3.0
3 main104返回值:"Genius Vczh!"
4 main105返回值:3
5 main106返回值:3.0
6 main107返回值:"Genius Vczh!"
操作符的优先级比函数低,因此sin a + sin b实际上是(sin a)+(sin b)。 于是下面的代码返回8.0:
1 def main108 = ln (exp 3.0) + ln (exp 5.0)
有了操作符之后,就可以慢慢为IO、Exception等复杂对象建模并且开发语法糖了。
posted on 2008-12-14 08:37
陈梓瀚(vczh) 阅读(1766)
评论(2) 编辑 收藏 引用 所属分类:
脚本技术