Difference between revisions of "DDC/FieldProjections"

From HaskellWiki
< DDC
Jump to navigation Jump to search
Line 8: Line 8:
   
 
instance Out Vector where
 
instance Out Vector where
out vec = println $ parens (show vec.x % "," % show vec.y)
+
out vec = println $ parens (show vec.x % "," % show vec.y)
   
 
main ()
 
main ()
Line 24: Line 24:
 
<haskell>
 
<haskell>
 
project Vector where
 
project Vector where
magnitude (Vector x y)
+
magnitude (Vector x y) = sqrt (x * x + y * y)
= sqrt (x * x + y * y)
 
 
</haskell>
 
</haskell>

Revision as of 11:27, 18 March 2008

Data fields

When data types are defined using field names, we can use the projection operator (.) to select the fields.

data Vector
         = Vector { x :: Float; y :: Float; }

instance Out Vector where
        out vec = println $ parens (show vec.x % "," % show vec.y)

main ()
 = do   vec = Vector 3.0 4.0
        out vec        -- prints '(3.0, 4.0)'

        out vec.x      -- prints '3.0'
        out vec.y      -- prints '4.0'

Custom projections

We can also define our own projections.

project Vector where
        magnitude (Vector x y) = sqrt (x * x + y * y)