Changes between Version 72 and Version 73 of DataParallel/ClosureConversion/ClassLess
- Timestamp:
- May 18, 2007 7:34:07 AM (13 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_(n-1) $ 368 \x1 .. x(n-1) -> uncurry_(n-1) f :$ (x1, .., x(n-1) 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