Re: [Haskell-cafe] How to organize code
On 27 Jan 2008, at 11:18 PM, L.Guo wrote: Hi, How do you organize code ? Here is a sample. Acturally, I am thinking about using this plan. Any suggestions ? -- BasicalType.hs type Position = (Int,Int) data Box = Box { pos :: Position } data Chain = Chain { pos :: [Position] } -- Object.hs import BasicalType class Object o where pos :: o - [Position] -- Type.hs import BasicalType import Object instance Object Box where pos = return . BasicalType.pos instance Object Chain where pos = BasicalType.pos -- Main.hs import Type ... I would recommend against this; Type.hs should define the types directly, and define or import the Object class. In particular, IIRC GHC wants ever instance in the same module as either the type or the class definition, for performance reasons (this is the most common pattern, so it gets special optimizations). jcc ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] How to organize code
Hi, How do you organize code ? Here is a sample. Acturally, I am thinking about using this plan. Any suggestions ? -- BasicalType.hs type Position = (Int,Int) data Box = Box { pos :: Position } data Chain = Chain { pos :: [Position] } -- Object.hs import BasicalType class Object o where pos :: o - [Position] -- Type.hs import BasicalType import Object instance Object Box where pos = return . BasicalType.pos instance Object Chain where pos = BasicalType.pos -- Main.hs import Type ... Regards -- L.Guo 2008-01-28 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] How to organize code
On 1/27/08, L.Guo [EMAIL PROTECTED] wrote: Hi, How do you organize code ? Here is a sample. Acturally, I am thinking about using this plan. Any suggestions ? -- BasicalType.hs type Position = (Int,Int) data Box = Box { pos :: Position } data Chain = Chain { pos :: [Position] } -- Object.hs import BasicalType class Object o where pos :: o - [Position] -- Type.hs import BasicalType import Object instance Object Box where pos = return . BasicalType.pos instance Object Chain where pos = BasicalType.pos -- Main.hs import Type ... Be careful not to confuse Haskell's type class system with the idea of a class in object-oriented programming. I suggest you read this article: http://trevion.blogspot.com/2007/02/snowball-chance.html Cheers, Tim -- Tim Chevalier * http://cs.pdx.edu/~tjc * Often in error, never in doubt ...It's a thin line between amateur and professional, a line mostly emphasized by insecure professionals. -- Bob Franke ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe