[Haskell-beginners] development workflow ?

John M. Dlugosz ngnr63q02 at sneakemail.com
Fri Apr 25 16:26:44 UTC 2014


On 4/25/2014 10:06 AM, Daniel Trstenjak wrote:
> On Fri, Apr 25, 2014 at 09:58:04AM -0500, John M. Dlugosz wrote:
>> I have no idea what's a good idea; I'm just showing what I've
>> learned thus far.  What is the right way to develop a package?
>
> Why have you copied gloss?
> Have you just added a new function?
> Have you modified the code?
>

To be specific, in Graphics/Gloss/Internals/Render/Circle.hs

	{-# INLINE circleSteps #-}
	circleSteps :: Float -> Int
	circleSteps sDiam
	        | sDiam < 8     = 8
	        | sDiam < 16    = 16
	        | sDiam < 32    = 32
	        | otherwise     = round sDiam

Originally, the otherwise branch said 64.  When drawing my Pappas Chain, the outer circle 
was not tangent to all the little circles, but clipped through them and when zoomed was 
obviously a polygon and not a circle at all.

So, why's it limited to 64?  Maybe we don't want to go crazy if zoomed in deeply, and most 
of it doesn't show anyway.  So I thought I might tinker with it some more to make it 
proper circle quality only where it intersects the viewport, and crude outside (if not 
omitted entirely).

I might also turn on anti-aliasing, which if not exposed already means adding a function 
in the private guts to change the setting of the OpenGL handle.

But more generally, everyone who develops a package and continues to develop a new version 
while the old one is installed and used by other components must be doing something 
(sandbox for this case, I think).  And even if a body of code is not intended to be a 
general purpose library shipped on its own, a big project ought to be divided into parts, 
so it is desirable to know which files changed and do far less work to build than to 
compile every single source file again.

—John



More information about the Beginners mailing list