Home > Uncategorized > 函数式编程 2 —— javascript 1.7

函数式编程 2 —— javascript 1.7

February 23rd, 2010

请使用支持JavaScript1.7以上版本的浏览器运行下面的代码

  1. function perms(list){
  2.     if(list.length)
  3.         return Array.concat.apply(
  4.             [],
  5.             [
  6.                 [O.concat(T) for each(T in I)] 
  7.                     for each([O,I] in list.map(function(o,i) [[o],perms(list.slice(0,i).concat(list.slice(i+1)))]))
  8.             ]
  9.         );
  10.     else
  11.         return [[]];
  12. }
  13.  
  14. alert(perms([1,2,3,4]).join("\n"));

JavaScript语法写Functional还是繁琐,上面的这个,用erlang来写的话只要两行——

  1. perms([]) -> [[]];
  2. perms(L) -> [[H|T] || H<-L, T<-perms(L--[H])].

月影 Uncategorized

  1. March 2nd, 2010 at 19:22 | #1

    表领悟!js1.7也玩牛的了。
    其实最让我纠结的就是为什么ECMA v5还没有加入维护constructor的属性……怨念啊怨念。

    另:做链接好吗?
    http://corodidea.net/blog