Modest opinions  
by a humble autodidact
除非你父母都学过Lisp,而且在你童年里经常对你说(爱 我 你宝贝)这样的句子,否则你会觉得某些二元函数的使用写成
(<left operand> <binary operator> <right operand>)比写成
(<binary operator> <left operand> <right operand>)的形式更直官。F#是允许定义operator的,但限制是不能用数字和字母,定义一个这样的operator:
 let (^$&*%@!?) lhs rhs = ...
可能很爽,但是别人,或者自己在一段时间以后,看到这样的代码:
let c = a ^$&*%@!? b
的时候,一定会觉得很^$&*%@!?。为了既可以把函数名放在两个参数中间,又能用字母拼写一个有意义的名字,可以用以下小技巧:
let binop rhs lhs = ...
注意rhs在左边。使用的时候这样写:
<left operand> |>binop <right operand>
基本上达到需要的效果。

然后是pitfall一个,我可是被这种bug害惨了。特别是在F#调用.NET类的时候要注意啊:赋值不是用=,而是用<-。最坑人的是错写成=以后编译器不会有任何意见。MSR的老大,在C语言里把==写成=编译器也要吼一声,你们还是学一下吧。

posted on 2008-06-19 10:15  yushih  阅读(222)  评论(2编辑  收藏  举报