
Am Sonntag, 19. März 2006 15:53 schrieb Bulat Ziganshin:
Hello Manuel,
Sunday, March 19, 2006, 5:35:12 AM, you wrote:
MMTC> PS: IIRC Clean supports strict tuples.
i've proposed to allow adding strict mark to any type constructors and type constructor parameters so that finally we can define any data structure that can be defined in strict languages. in particular:
type StrictPair a b = !(,) a b type StrictElements a b = (,) !a !b type StrictBoth a b = !(,) !a !b type StrictFunction a b = !(->) !a !b
strictMap :: StrictFunction a b -> ![!a] -> ![!b]
where ![!a] is a strict list with strict elements
Strictness has to refer to attributes (the things you apply a data constructor to). In you approach, strictness is connected to type arguments. This causes problems. For example, if you have data T a = C a a, what would T !a mean? Would both attributes be strict? But how would you force only one attribute to be strict then? These thinkings make me believe that assigning strictness flags to type arguments is just not sensible. Best wishes, Wolfgang