Difference between revisions of "Talk:Graham Scan Implementation"

From HaskellWiki
Jump to navigation Jump to search
(New page: Should "then x: scan (z:xs)" be "then scan (x:z:xs)" in case there are two tight turns in a row?)
 
m
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
== Use foldr to simplify buttonLeft ==
Should "then x: scan (z:xs)" be "then scan (x:z:xs)" in case there are two tight turns in a row?
 
  +
  +
The buttonLeft function can be simplified using foldr like so:
  +
<haskell>
  +
buttonLeft :: [Pt] -> Pt
  +
buttonLeft = folrd minY (Pt (1/0, 1/0)) where
  +
minY (Pt (ax, ay)) (Pt (bx, by))
  +
| ay > by = Pt (bx, by)
  +
| ay < by = Pt (ax, ay)
  +
| ax < bx = Pt (ax, ay)
  +
| otherwise = Pt (bx, by)
  +
</haskell>

Latest revision as of 06:29, 1 September 2014

Use foldr to simplify buttonLeft

The buttonLeft function can be simplified using foldr like so:

buttonLeft :: [Pt] -> Pt
buttonLeft = folrd minY (Pt (1/0, 1/0)) where
  minY (Pt (ax, ay)) (Pt (bx, by))
    | ay > by = Pt (bx, by)
    | ay < by = Pt (ax, ay)
    | ax < bx = Pt (ax, ay)
    | otherwise = Pt (bx, by)