随笔-341  评论-2670  文章-0  trackbacks-0
    现在的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)  编辑 收藏 引用 所属分类: 脚本技术

评论:
# re: Kernel FP的列表和操作符语法糖完成! 2008-12-14 19:35 | momor
冒昧的问一下,Kernel FP的实现目标是什么,或者说跟其他FP语言的区别之处与强项。  回复  更多评论
  
# re: Kernel FP的列表和操作符语法糖完成! 2008-12-14 19:53 | 陈梓瀚(vczh)
只是为了学习  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理