
Message: 3 Date: Sun, 22 May 2011 06:52:49 -0400 From: "Edward Z. Yang"
Subject: Re: Proposal: Value strict versions of containers To: Milan Straka Cc: libraries Message-ID: <1306061483-sup-1713@ezyang> Content-Type: text/plain; charset=UTF-8 Excerpts from Milan Straka's message of Sun May 22 06:50:07 -0400 2011:
- the types Data.IntMap.IntMap, Data.IntMap.Lazy.IntMap and Data.IntMap.Strict.IntMap should be equal -- so I can use strict methods on IntMap someone else created with lazy methods. That is simple in absence of type classes.
Comment: This would mean you would get no static assurances against mixing up a strict IntMap with a lazy IntMap; for all intents and purposes, this is equivalent to implementing strict versions of all functions on top of a lazy data type.
Another consequence to this design is that, should someone want to have
class MapC m key value | m -> key, m -> value where
it becomes impossible to directly write
instance MapC (Data.IntMap.Strict.IntMap Int a) Int a where
instance MapC (Data.IntMap.Lazy.IntMap Int a) Int a where
because the two instances are the same. Regardless, +1 for Milan's proposal either with one type or separate types for strict and lazy. John Lato