(IFn f, Object init)
| 231 | } |
| 232 | |
| 233 | public Object kvreduce(IFn f, Object init){ |
| 234 | init = hasNull?f.invoke(init,null,nullValue):init; |
| 235 | if(RT.isReduced(init)) |
| 236 | return ((IDeref)init).deref(); |
| 237 | if(root != null){ |
| 238 | init = root.kvreduce(f,init); |
| 239 | if(RT.isReduced(init)) |
| 240 | return ((IDeref)init).deref(); |
| 241 | else |
| 242 | return init; |
| 243 | } |
| 244 | return init; |
| 245 | } |
| 246 | |
| 247 | public Object fold(long n, final IFn combinef, final IFn reducef, |
| 248 | IFn fjinvoke, final IFn fjtask, final IFn fjfork, final IFn fjjoin){ |