Constructing Cases

David Feuer dfeuer@cs.brown.edu
Fri, 24 May 2002 10:59:44 -0400


Use an array.  Don't remember for sure, but I think something like

q = array (0, max (map fst list)) list
f = (q!!)

will probably work.


On Fri, May 24, 2002, Carl McTague wrote:
> Hi there,
> 
> is there a simple way to carry out the following type of conversion?
> Suppose I have a list (finite) of (value,image) pairs such as:
> 
> list = [(0,1),(1,0)]
> 
> >From this I want to generate a function
> 
> f 0 = 1
> f 1 = 0
> 
> Is there a way to do this?  Note, I don't want to define a function
> that searches through the list each time it is invoked, I want to
> generate the function once and have it be as fast as the
> pattern-matcher can make it.
> 
> So, I'm looking for a function g :: [(a,b)] -> a -> b
> 
> Is this simple to do?
> 
> Thanks,
>   Carl
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

-- 
Night.  An owl flies o'er rooftops.  The moon sheds its soft light upon
the trees.
David Feuer