Changes between Version 72 and Version 73 of DataParallel/ClosureConversion/ClassLess
 Timestamp:
 May 18, 2007 7:34:07 AM (8 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

DataParallel/ClosureConversion/ClassLess
v72 v73 357 357 $WC_CC = /\a1..an > lam_m (C_CC@a1@..@an) 358 358 }}} 359 where the family of functions 360 {{{ 361 lam_1 :: (a1 > b) > (a1 :> b) 362 lam_1 = lam 363 364 lam_n :: (a1 > .. > an > b) 365 > (a1 :> .. :> an :> b) 366 lam_n f = 367 lam_(n1) $ 368 \x1 .. x(n1) > uncurry_(n1) f :$ (x1, .., x(n1) 369 }}} 370 turns an `n`ary function into an `n`ary closure. (NB: This is not the same as `(to iso<..>)` for that type, as we do not convert the types of the arguments of the function.) 359 371 360 372 We translate terms as follows: 361 373 {{{ 362 cc[[C]] = $WC_CC 374 cc[[C]] 375  if C_CC exists = $WC_CC 363 376 cc[[x::t]] 364 377  if x_CC exists = x_CC … … 366 379 cc[[lit]] = lit 367 380 cc[[e1 e2]] = cc[[e1]] $: cc[e2] 368 cc[[e 1@t]] = cc[[e1]]@t^381 cc[[e@t]] = cc[[e]]@t^ 369 382 cc[[\x > e]] = (\(y1, .., yn) x_CC > cc[e]]) :$ 370 383 (y1, .., yn) … … 383 396  otherwise = C x1 .. xn > cc[[e]] 384 397 }}} 385 where the family of functions 386 {{{ 387 lam_n :: (a1 > .. > an > b) 388 > (a1 :> .. :> an :> b) 389 }}} 390 turns an `n`ary function into an `n`ary closure. (NB: This is not the same as `to iso` for that type, as we do not convert the types of the arguments of the function.) 398 391 399 392 400