On Sun, Jul 19, 2009 at 7:40 AM, wren ng thornton<[email protected]> wrote: > Fernan Bolando wrote: >> >> The intention is z0 is a system parameter and database, it contains a >> set of info needed to define a particular simulation >> >> it looks like ( [n,m...], [m,o,p]) >> >> n is is a list info settings for the circuit analysis >> m is a list of statistics for the circuits that is need in sub-sequent >> calculation >> m is a list of circuit settings like temperature etc. >> o is a list of matrix solution for non-linear newton raphson >> p is a list of matrix solution for time dependent calculations > > > This would be better as, > > > data SystemParameterDatabase = SystemParameterDatabase > { infoSettings :: InfoSettings > , statistics :: Statistics > , settings :: Settings > , nlnr :: [Matrix Double] > , timeDependent :: [Matrix Double] > } > > data InfoSettings = InfoSettings > { pMSET :: MSET > , aSetting :: A > , bSetting :: B > ... > } > > data Statistics = Statistics > { aStatistic :: A > , anotherStatistic :: A > , bStatistic :: B > ... > } > > data Settings = Settings > { temperature :: Kelvin > , etc :: Etc > } > ... > > > A single-constructor ADT, especially with the labeled-fields syntax, is > pretty close to C structs; no need to reinvent them and give yourself > headaches. > > > Really, the only thing you should be using lists for is a variable-length > sequence of elements drawn from the same type and distinguished only by > their position in the sequence. Whenever the length is fixed or the > (semantic) type of elements can be distinguished from one another (or > altered by pushing/popping the list), then a list is not what you want to be > using because it doesn't capture the intention of the type (and therefore > allows unintelligible values of the type, and inappropriate transformations > on the type). > > -- > Live well, > ~wren
This is the kind of code recommendations I was looking. thanks -- http://www.fernski.com _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
