現(xiàn)在的Kernel FP已經(jīng)支持列表語(yǔ)法和操作符語(yǔ)法了。
列表語(yǔ)法為[1,2,3,4,5]。原來(lái)是需要寫成list 1 (list 2 (list 3 (list 4 (list 5 empty))))的。不過(guò)后面這種寫法仍然是支持的。
操作符可以自定義,凡是僅由“+-*/%<>=!&^|~@#$?”構(gòu)成,而又不是“|”和“=”的記號(hào)都可以視為二元操作符。如果是+、-、*、/、%、<、<=、>、>=、==、!=、^、&&和||的話,優(yōu)先級(jí)跟C++一樣。如果是其他操作符,那么優(yōu)先級(jí)一致而且最低。
因?yàn)椴僮鞣彩莻€(gè)函數(shù),因此將操作符作為函數(shù)使用的時(shí)候只需要加一對(duì)括號(hào)就可以了,不過(guò)中間不可以有空格。所以我們就可以定義“+”并寫出下面的代碼:
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!"
下面是執(zhí)行結(jié)果:
1 main102返回值:3
2 main103返回值:3.0
3 main104返回值:"Genius Vczh!"
4 main105返回值:3
5 main106返回值:3.0
6 main107返回值:"Genius Vczh!"
操作符的優(yōu)先級(jí)比函數(shù)低,因此sin a + sin b實(shí)際上是(sin a)+(sin b)。 于是下面的代碼返回8.0:
1 def main108 = ln (exp 3.0) + ln (exp 5.0)
有了操作符之后,就可以慢慢為IO、Exception等復(fù)雜對(duì)象建模并且開(kāi)發(fā)語(yǔ)法糖了。
posted on 2008-12-14 08:37
陳梓瀚(vczh) 閱讀(1800)
評(píng)論(2) 編輯 收藏 引用 所屬分類:
腳本技術(shù)