函数式编程 2 —— javascript 1.7
February 23rd, 2010
请使用支持JavaScript1.7以上版本的浏览器运行下面的代码
- function perms(list){
- if(list.length)
- return Array.concat.apply(
- [],
- [
- [O.concat(T) for each(T in I)]
- for each([O,I] in list.map(function(o,i) [[o],perms(list.slice(0,i).concat(list.slice(i+1)))]))
- ]
- );
- else
- return [[]];
- }
- alert(perms([1,2,3,4]).join("\n"));
JavaScript语法写Functional还是繁琐,上面的这个,用erlang来写的话只要两行——
- perms([]) -> [[]];
- perms(L) -> [[H|T] || H<-L, T<-perms(L--[H])].
表领悟!js1.7也玩牛的了。
其实最让我纠结的就是为什么ECMA v5还没有加入维护constructor的属性……怨念啊怨念。
另:做链接好吗?
http://corodidea.net/blog