On Feb 10, 2008 1:42 PM, Sebastian Sylvan <[EMAIL PROTECTED]>
wrote:

>
>
> On Feb 10, 2008 1:34 PM, Michael Feathers <[EMAIL PROTECTED]>
> wrote:
>
> > On a lark, I loaded this into Hugs this morning, and it didn't complain:
> >
> >
> > data Thing = Thing (Integer -> Integer)
> >
> >
> >
> > But, I've never seen that sort of construct in an example.  Do people
> > ever embed functions in ADTs?
>
>
> Yes, this is quite common. Here's a quick example (untested):
>
> data MyMap key value = M (key -> Maybe value)
>
> lookup (M m) key = m key
> insert (M m) key value = M (\key' -> if key' == key then Just value else m
> key')
>
> This is a naive data structure for storing a map as a function from the
> key to the value. Not very efficient, perhaps, but you use similar concepts
> in more useful scenarios (e.g. the State monad).
>

Perhaps I should add an empty MyMap too:

empty = M (\_-> Nothing )

-- 
Sebastian Sylvan
+44(0)7857-300802
UIN: 44640862
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to