| 5894 | } |
| 5895 | |
| 5896 | static public String primInterface(IPersistentVector arglist) { |
| 5897 | StringBuilder sb = new StringBuilder(); |
| 5898 | for(int i=0;i<arglist.count();i++) |
| 5899 | sb.append(classChar(tagOf(arglist.nth(i)))); |
| 5900 | sb.append(classChar(tagOf(arglist))); |
| 5901 | String ret = sb.toString(); |
| 5902 | boolean prim = ret.contains("L") || ret.contains("D"); |
| 5903 | if(prim && arglist.count() > 4) |
| 5904 | throw new IllegalArgumentException("fns taking primitives support only 4 or fewer args"); |
| 5905 | if(prim) |
| 5906 | return "clojure.lang.IFn$" + ret; |
| 5907 | return null; |
| 5908 | } |
| 5909 | |
| 5910 | static FnMethod parse(ObjExpr objx, ISeq form, Object rettag) { |
| 5911 | //([args] body...) |