notes cleanups

This commit is contained in:
Simon Michael 2009-03-15 11:13:12 +00:00
parent f5e9a8ec79
commit 271a504a99

50
NOTES
View File

@ -10,7 +10,7 @@ clever tricks like the plague." --Edsger Dijkstra
* to do * to do
** errors ** errors
*** balance 'assets.*fargo' shows no accounts *** timelog report for today with no entries ignores an open session from yesterday
*** not catching some unbalanced entries, two ways: *** not catching some unbalanced entries, two ways:
**** 1 **** 1
1/1 test1 1/1 test1
@ -26,12 +26,12 @@ clever tricks like the plague." --Edsger Dijkstra
; 2009/01/01 test2 a $-100.00 $-100.00 ; 2009/01/01 test2 a $-100.00 $-100.00
; b $-100.00 $-200.00 ; b $-100.00 $-200.00
*** --depth works with reg -W but not with reg
*** register report should sort by date *** register report should sort by date
*** timelog report for today with no entries ignores an open session from yesterday
*** balance report: zero-balance root accounts do not elide properly
*** too many dependencies, hard to install esp. without cabal install *** too many dependencies, hard to install esp. without cabal install
** features ** features
*** more ledger features *** more ledger features
**** rename entry -> transaction, transaction -> posting
**** -U --uncleared **** -U --uncleared
**** actual/effective entry & txn dates, for more accurate modelling & easier reconciliation **** actual/effective entry & txn dates, for more accurate modelling & easier reconciliation
**** ~/.hledgerrc for setting defaults **** ~/.hledgerrc for setting defaults
@ -62,7 +62,6 @@ clever tricks like the plague." --Edsger Dijkstra
*** speed *** speed
**** more optimisation **** more optimisation
**** speed regression tests **** speed regression tests
**** cache file ?
** tests ** tests
*** test all esoteric ledger file features *** test all esoteric ledger file features
*** wanted: a test for reading a ledger from stdin *** wanted: a test for reading a ledger from stdin
@ -318,7 +317,7 @@ competitors/fellow niche inhabitants
**** on windows **** on windows
***** via binaries ***** via binaries
*** reduce dependencies *** reduce dependencies
*** split packages ? **** split packages ?
*** set up binary publishing *** set up binary publishing
*** clarify bugtracking process *** clarify bugtracking process
* misc * misc
@ -361,52 +360,11 @@ are there any cashflow, tax, budgetary problems looming ?
[2:08pm] <sm> those would be a good start. How do I make those visual [2:08pm] <sm> those would be a good start. How do I make those visual
[2:09pm] <sm> well I guess the first step is a script to print them [2:09pm] <sm> well I guess the first step is a script to print them
** compare other languages! a parser generator and decent speed is required
*** python: http://cheeseshop.python.org/pypi/ZestyParser, pysec, pyparsing
*** squeak: LanguageGame, T-Gen, SmaCC
*** lisp: ?
*** ruby: too slow (?)
** data representation ** data representation
*** http://www.python.org/dev/peps/pep-0327/ *** http://www.python.org/dev/peps/pep-0327/
*** http://www.n-heptane.com/nhlab/repos/Decimal/ *** http://www.n-heptane.com/nhlab/repos/Decimal/
*** http://www.n-heptane.com/nhlab/repos/Decimal/Money.hs *** http://www.n-heptane.com/nhlab/repos/Decimal/Money.hs
*** http://www2.hursley.ibm.com/decimal/ *** http://www2.hursley.ibm.com/decimal/
** lispy's template haskell for quickcheck
-- find tests with template haskell
import Language.Haskell.Parser
{-# OPTIONS_GHC -fno-warn-unused-imports -no-recomp -fth #-}
{- ghc --make Unit.hs -main-is Unit.runTests -o unit -}
runTests :: IO ()
runTests = $(mkChecks props)
mkChecks [] = undefined
mkChecks [name] = mkCheck name
mkChecks (name:ns) = [| $(mkCheck name) >> $(mkChecks ns) |]
mkCheck name = [| putStr (name ++ ": ") >> quickCheck $(varE (mkName name)) |]
{- | looks in Tests.hs for functions like prop_foo and returns
the list. Requires that Tests.hs be valid Haskell98. -}
props :: [String]
props = unsafePerformIO $
do h <- openFile "Tests.hs" ReadMode
s <- hGetContents h
case parseModule s of
(ParseOk (HsModule _ _ _ _ ds)) -> return (map declName (filter isProp ds))
(ParseFailed loc s') -> error (s' ++ " " ++ show loc)
{- | checks if function binding name starts with @prop_@ indicating
that it is a quickcheck property -}
isProp :: HsDecl -> Bool
isProp d@(HsFunBind _) = "prop_" `isPrefixOf` (declName d)
isProp _ = False
{- | takes an HsDecl and returns the name of the declaration -}
declName :: HsDecl -> String
declName (HsFunBind (HsMatch _ (HsIdent name) _ _ _:_)) = name
declName _ = undefined
** snippets ** snippets
-- trace a MixedAmount -- trace a MixedAmount
matrace :: MixedAmount -> MixedAmount matrace :: MixedAmount -> MixedAmount