[Haskell-cafe] Set of reals...?
Stijn De Saeger
stijndesaeger at gmail.com
Wed Oct 27 22:51:21 EDT 2004
aha, I see.
Seems like i still have a long way to go with functional programming.
final question: i tried to test the code below, but it seems GHCi will
only take the `isin` functions when they are defined in lambda
notation (like isin = (\x -> ...)).
Did you run this code too, or were you just sketching me the rough idea?
Cheers for all the replies by the way, i learnt a great deal here.
stijn.
On Wed, 27 Oct 2004 14:09:36 +0100, Keean Schupke
<k.schupke at imperial.ac.uk> wrote:
> Well, its functional of course:
>
> union :: Interval -> Interval -> Interval
> union i j = Interval {
> isin x = isin i x || isin j x
> }
>
> intersection :: Interval -> Interval -> Interval
> intersection i j = Interval {
> isin x = isin i x && isin j x
> }
>
> Keean.
>
>
>
>
> Stijn De Saeger wrote:
>
> >That seems like a very clean way to define the sets indeed, but how
> >would you go about implementing operations like intersection,
> >complement etc... on those structures? define some sort of algebra
> >over the functions? or extend such sets by adding elements? hm...
> >sounds interesting,.
> >
> >thanks,
> >stijn.
> >
> >
> >On Wed, 27 Oct 2004 11:52:54 +0100, Keean Schupke
> ><k.schupke at imperial.ac.uk> wrote:
> >
> >
> >>I think someone else mentioned using functions earlier,
> >>rather than a datatype why not define:
> >>
> >> data Interval = Interval { isin :: Float -> Bool }
> >>
> >>Then each range becomes a function definition, for example:
> >>
> >> myInterval = Interval {
> >> isin r
> >> | r == 0.6 = True
> >> | r > 0.7 && r < 1.0 = True
> >> | otherwise = False
> >> }
> >>
> >>Then you can test with:
> >>
> >> (isin myInterval 0.6)
> >>
> >>Keean
> >>
> >>
> >>
> >>
>
>
More information about the Haskell-Cafe
mailing list