networks: Add read-org-sbfs/state.
This commit is contained in:
parent
1ff413ddcc
commit
835b89bbb8
1 changed files with 23 additions and 0 deletions
23
networks.rkt
23
networks.rkt
|
@ -92,6 +92,7 @@
|
|||
(#:headers boolean?)
|
||||
(listof sbf/state?))]
|
||||
[read-org-tbfs/state (->* (string?) (#:headers boolean?) (listof tbf/state?))]
|
||||
[read-org-sbfs/state (->* (string?) (#:headers boolean?) (listof sbf/state?))]
|
||||
[print-org-tbfs/state (->* ((non-empty-listof tbf/state?)) (#:headers boolean?)
|
||||
(listof (listof (or/c number? symbol?))))]
|
||||
[tbf/state-tabulate* (->* ((non-empty-listof tbf/state?)) (#:headers boolean?)
|
||||
|
@ -1110,6 +1111,28 @@
|
|||
(tbf/state '#hash((x0 . 1) (x1 . 2)) 3)
|
||||
(tbf/state '#hash((x0 . 1) (x1 . 1)) 2)))))
|
||||
|
||||
;;; Like read-org-tbfs/state, but reads a list of SBFs. Therefore,
|
||||
;;; the lists of numbers in the sexp are taken to be the weights of
|
||||
;;; the SBFs.
|
||||
;;;
|
||||
;;; If headers is #t, the names of the variables to appear as the
|
||||
;;; inputs of the TBF are taken from the first list. If headers is
|
||||
;;; #f, the names of the variables are generated as xi, where i is the
|
||||
;;; index of the variable.
|
||||
(define (read-org-sbfs/state str #:headers [headers #t])
|
||||
(lists->sbfs/state (read-org-sexp str) #:headers headers))
|
||||
|
||||
(module+ test
|
||||
(test-case "read-org-sbfs/state"
|
||||
(check-equal? (read-org-sbfs/state "((a b) (-1 2) (1 1))")
|
||||
(list
|
||||
(tbf/state '#hash((a . -1) (b . 2)) 0)
|
||||
(tbf/state '#hash((a . 1) (b . 1)) 0)))
|
||||
(check-equal? (read-org-sbfs/state "((-1 2) (1 1))" #:headers #f)
|
||||
(list
|
||||
(tbf/state '#hash((x0 . -1) (x1 . 2)) 0)
|
||||
(tbf/state '#hash((x0 . 1) (x1 . 1)) 0)))))
|
||||
|
||||
;;; Given a list of tbf/state, produces a sexp that Org-mode can
|
||||
;;; interpret as a table.
|
||||
;;;
|
||||
|
|
Loading…
Reference in a new issue