erm, yes you're right - don't know why that is - seems a fairly
arbitrary decision to me... perhaps someone else knows a good
reason why normal function definiton is not allowed?

Stijn De Saeger wrote:

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
<[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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









_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to