diff --git a/extra/bank/bank.factor b/extra/bank/bank.factor new file mode 100644 index 0000000000..c9228bedd5 --- /dev/null +++ b/extra/bank/bank.factor @@ -0,0 +1,33 @@ +USING: accessors calendar kernel money new-slots sequences ; +IN: bank + +MIXIN: policy +TUPLE: simple-policy interest-rate ; +INSTANCE: simple-policy policy +C: simple-policy + +GENERIC: interest-rate ( date account policy -- rate ) +M: simple-policy interest-rate 2nip interest-rate>> ; + +: daily-interest-rate ( date account policy -- rate ) + pick days-in-year >r interest-rate r> / ; + +TUPLE: account name balance transactions ; + +: ( name -- account ) + 0 V{ } clone account construct-boa ; + +TUPLE: transaction date amount description ; + +C: transaction + +: >>transaction ( account transaction -- account ) + over transactions>> push ; + +: open-account ( date opening-balance name -- account ) + >r "Account Opened" >>transaction ; + +: open-account-now ( opening-balance name -- account ) + now -rot open-account ; + +