Generalise the ! and UNPACK mechanism for data types, to unpack function arguments
See this thread:
Briefly the idea is to allow
data T = MkT (!Int -> Bool)
to make a MkT
hold strict functions only. Anyone unpacking a MkT
can assume the function is strict; and anyone building a MkT
gets a strictness wrapper aound whatever function they supply, so even if they supply a lazy function, it's made strict.
Seems like a natural generalisation of the existing strictness and UNPACK mechanism for data types.
Lots of details in the thread above.
Simon