
This seems like a natural thing to have around, but it's not in GHC 6.6... newTArrayIO :: (Enum i, Ix i) => (i, i) -> a -> IO (TArray i a) newTArrayIO (a,b) = liftM (TArray . listArray (a,b)) . sequence . zipWith ignore [a..b] . repeat . newTVarIO where ignore = flip const I haven't done any testing with this beyond type checking, but it seems like it could be useful for similar cases to newTVarIO. Has anyone else played with anything similar? -- Chad Scherrer "Time flies like an arrow; fruit flies like a banana" -- Groucho Marx

On Fri, 2007-01-26 at 11:34 -0800, Chad Scherrer wrote:
This seems like a natural thing to have around, but it's not in GHC 6.6...
newTArrayIO :: (Enum i, Ix i) => (i, i) -> a -> IO (TArray i a) newTArrayIO (a,b) = liftM (TArray . listArray (a,b)) . sequence . zipWith ignore [a..b] . repeat . newTVarIO where ignore = flip const
I haven't done any testing with this beyond type checking, but it seems like it could be useful for similar cases to newTVarIO. Has anyone else played with anything similar?
Agree. I learned lots regarding technologies that seemed like pure magic before, like GADT's and fundeps etc. Definately a good read. Mattias

On Fri, 2007-01-26 at 23:26 +0100, Mattias Bengtsson wrote:
On Fri, 2007-01-26 at 11:34 -0800, Chad Scherrer wrote:
This seems like a natural thing to have around, but it's not in GHC 6.6...
newTArrayIO :: (Enum i, Ix i) => (i, i) -> a -> IO (TArray i a) newTArrayIO (a,b) = liftM (TArray . listArray (a,b)) . sequence . zipWith ignore [a..b] . repeat . newTVarIO where ignore = flip const
I haven't done any testing with this beyond type checking, but it seems like it could be useful for similar cases to newTVarIO. Has anyone else played with anything similar?
Agree. I learned lots regarding technologies that seemed like pure magic before, like GADT's and fundeps etc. Definately a good read.
Hrrm. This was meant as a reply to Justin Bailey, sorry.
participants (2)
-
Chad Scherrer
-
Mattias Bengtsson