1 USING: accessors calendar kernel money new-slots sequences ;
5 TUPLE: simple-policy interest-rate ;
6 INSTANCE: simple-policy policy
7 C: <simple-policy> simple-policy
9 GENERIC: interest-rate ( date account policy -- rate )
10 M: simple-policy interest-rate 2nip interest-rate>> ;
12 : daily-interest-rate ( date account policy -- rate )
13 pick days-in-year >r interest-rate r> / ;
15 TUPLE: account name balance transactions ;
17 : <account> ( name -- account )
18 0 V{ } clone account construct-boa ;
20 TUPLE: transaction date amount description ;
22 C: <transaction> transaction
24 : >>transaction ( account transaction -- account )
25 over transactions>> push ;
27 : open-account ( date opening-balance name -- account )
28 <account> >r "Account Opened" <transaction> >>transaction ;
30 : open-account-now ( opening-balance name -- account )
31 now -rot open-account ;