Chris Smith wrote:
Chaddaï Fouché wrote:
Given that this structure isn't lazy enough, I really don't see a
problem with using Int (any random access list with a size that needs an
Integer would blow the memory anyway...).

Bad way to think about things. The implications of using Int as the result type of a function extend far beyond just storing the result type. They also include doing other computations that depend on the result type, and with enough type inference, the broken Int type propogates throughout the program.


I'd like not to be restricted to Int, but what's the proper way to do so? Just adding "genericFun = fromInteger . toInteger . fun" functions is just as bad as using Ints directly. What I need is something like a more general Ix class that is not limited to a fixed interval:

class Ix2 i where
        -- convert starting index and given index to an Int for internal
        -- representation
        toIndex   :: i -> i -> Int

        -- given an internal Int index and a starting index, return the
        -- representing index
        fromIndex :: Int -> i -> i

        -- translate a starting index and a number of elements into a
        -- size
        size      :: i -> Int -> i

This is meant to work with a starting-index and a given index, so that a list does not have to start at index 0. Is there something like this? Or is it somehow possible to use the existing Ix class to do that?

//Stephan

--

Früher hieß es ja: Ich denke, also bin ich.
Heute weiß man: Es geht auch so.

 - Dieter Nuhr
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to