Changes between Version 4 and Version 5 of DataParallel/Vectorisation/TypeVectorisation
- Timestamp:
- 05/27/07 23:48:37 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DataParallel/Vectorisation/TypeVectorisation
v4 v5 16 16 }}} 17 17 18 We need to represent functions whose argument and/or result type are unboxed different from functions over boxed types. The reason is the non-standard kinding rule implemented in GHC for `(->)`, which allows that the two argument type variables are instantiated to unboxed values iff the application of `(->)` is saturated. We can't defined a second type constructor with that property unless we extend the `TypeRep.Type` representation. We also can't simply use a type synonym for a vectorised type function constructor, because we must be able to partially apply it. 19 18 20 === Transformation rules === 19 21 … … 26 28 = T , otherwise 27 29 a* = a_v 28 (t1 -> t2)* = t1* ->> t2* 30 (t1 -> t2)* = (t1* -> t2*) :*: , if kindOf t1 == # 31 (t1^ -> t2^) or kindOf t2 == # 32 = t1 ?? 29 33 (t1 t2)* = t1* t2* 30 34 (forall a.t)* = forall a_v.t*
