;; ;; bank-account.scm ;; ;; Generic bank account records. ;; ;; ISC License ;; ;; Copyright 2023 Brmlab, z.s. ;; Dominik Pantůček ;; ;; Permission to use, copy, modify, and/or distribute this software ;; for any purpose with or without fee is hereby granted, provided ;; that the above copyright notice and this permission notice appear ;; in all copies. ;; ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE ;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR ;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS ;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, ;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ;; (declare (unit bank-account)) (module ( make-bank-account bank-account-insert ) (import scheme) ;; Bank account is represented as a list with list with the following ;; elements: list of transactions, account number, bank code. This ;; allows cheap transaction prepending. (define (make-bank-account number bank) (list '() number bank)) ;; Prepends given transaction to given bank account. It expects the ;; transactions list to be the first element of the bank account ;; list. (define (bank-account-insert account transaction) (cons (cons transaction (car account)) (cdr account))) (define (make-bank-transaction id date amount currency varsym) #f) )