example: munch-table -> munch-sexp.
This code block can be used to prepare any sexp Org-mode produces.
This commit is contained in:
parent
0bceb820df
commit
e07c5c239c
1 changed files with 22 additions and 22 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
The [[intro][following section]] describes how Org-mode can interact with
|
The [[intro][following section]] describes how Org-mode can interact with
|
||||||
Racket, and how this interaction can be used for a fluid workflow
|
Racket, and how this interaction can be used for a fluid workflow
|
||||||
with =dds=. In particular, the code block =munch-table= is [[tabread][defined]]
|
with =dds=. In particular, the code block =munch-sexp= is [[tabread][defined]]
|
||||||
in this section.
|
in this section.
|
||||||
|
|
||||||
The subsequent sections show off some the functionalities of the
|
The subsequent sections show off some the functionalities of the
|
||||||
|
@ -204,19 +204,19 @@ tab
|
||||||
parameterised Elisp source block which will explicitly convert the
|
parameterised Elisp source block which will explicitly convert the
|
||||||
table to a string:
|
table to a string:
|
||||||
|
|
||||||
#+NAME: munch-table
|
#+NAME: munch-sexp
|
||||||
#+BEGIN_SRC elisp :results output drawer :var tab=test-table
|
#+BEGIN_SRC elisp :results output drawer :var tab=test-table
|
||||||
(prin1 tab)
|
(prin1 tab)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS: munch-table
|
#+RESULTS: munch-sexp
|
||||||
:RESULTS:
|
:RESULTS:
|
||||||
(("a" "(and a b)") ("b" "(or b (not a))"))
|
(("a" "(and a b)") ("b" "(or b (not a))"))
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
We can now correctly receive this table in a Racket source code
|
We can now correctly receive this table in a Racket source code
|
||||||
block by threading it through =munch-table=:
|
block by threading it through =munch-sexp=:
|
||||||
#+BEGIN_SRC racket :results output drawer :var tab=munch-table(tab=test-table)
|
#+BEGIN_SRC racket :results output drawer :var tab=munch-sexp(tab=test-table)
|
||||||
(println tab)
|
(println tab)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ tab
|
||||||
|
|
||||||
[[../utils.rkt][=dds/utils=]] has several functions for parsing such strings, and
|
[[../utils.rkt][=dds/utils=]] has several functions for parsing such strings, and
|
||||||
notably =read-org-variable-mapping=, with the shortcut =unorg=:
|
notably =read-org-variable-mapping=, with the shortcut =unorg=:
|
||||||
#+BEGIN_SRC racket :results output drawer :var tab=munch-table(tab=test-table)
|
#+BEGIN_SRC racket :results output drawer :var tab=munch-sexp(tab=test-table)
|
||||||
(unorg tab)
|
(unorg tab)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ tab
|
||||||
'#hash((a . (and a b)) (b . (or b (not a))))
|
'#hash((a . (and a b)) (b . (or b (not a))))
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
Of course, we can use =munch-table= to prepare any other table than
|
Of course, we can use =munch-sexp= to prepare any other table than
|
||||||
=test-table= for use with Racket:
|
=test-table= for use with Racket:
|
||||||
|
|
||||||
#+NAME: another-test-table
|
#+NAME: another-test-table
|
||||||
|
@ -244,7 +244,7 @@ tab
|
||||||
| b | (and a c) |
|
| b | (and a c) |
|
||||||
| c | (and a (not b)) |
|
| c | (and a (not b)) |
|
||||||
|
|
||||||
#+BEGIN_SRC racket :results output drawer :var tab=munch-table(tab=another-test-table)
|
#+BEGIN_SRC racket :results output drawer :var tab=munch-sexp(tab=another-test-table)
|
||||||
(unorg tab)
|
(unorg tab)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ tab
|
||||||
** Inline graph visualisation with Graphviz
|
** Inline graph visualisation with Graphviz
|
||||||
Some functions in =dds= build graphs:
|
Some functions in =dds= build graphs:
|
||||||
|
|
||||||
#+BEGIN_SRC racket :results output drawer :var bf=munch-table(another-test-table)
|
#+BEGIN_SRC racket :results output drawer :var bf=munch-sexp(another-test-table)
|
||||||
(build-interaction-graph (unorg bf))
|
(build-interaction-graph (unorg bf))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ tab
|
||||||
racket source code blocks takes care of requiring =graph=.)
|
racket source code blocks takes care of requiring =graph=.)
|
||||||
|
|
||||||
#+NAME: igraph
|
#+NAME: igraph
|
||||||
#+BEGIN_SRC racket :results output drawer :var bf=munch-table(another-test-table)
|
#+BEGIN_SRC racket :results output drawer :var bf=munch-sexp(another-test-table)
|
||||||
(display (graphviz (build-interaction-graph (unorg bf))))
|
(display (graphviz (build-interaction-graph (unorg bf))))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ tab
|
||||||
|
|
||||||
Here's the unsigned interaction graph of this network:
|
Here's the unsigned interaction graph of this network:
|
||||||
#+NAME: simple-bn-ig
|
#+NAME: simple-bn-ig
|
||||||
#+BEGIN_SRC racket :results silent :var simple-bn=munch-table(simple-bn)
|
#+BEGIN_SRC racket :results silent :var simple-bn=munch-sexp(simple-bn)
|
||||||
(dotit (build-interaction-graph (unorg simple-bn)))
|
(dotit (build-interaction-graph (unorg simple-bn)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ tab
|
||||||
Here's the signed interaction graph of this network:
|
Here's the signed interaction graph of this network:
|
||||||
|
|
||||||
#+NAME: simple-bn-sig
|
#+NAME: simple-bn-sig
|
||||||
#+BEGIN_SRC racket :results silent :var simple-bn=munch-table(simple-bn)
|
#+BEGIN_SRC racket :results silent :var simple-bn=munch-sexp(simple-bn)
|
||||||
(dotit (build-boolean-signed-interaction-graph (unorg simple-bn)))
|
(dotit (build-boolean-signed-interaction-graph (unorg simple-bn)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ tab
|
||||||
Here is the full state graph of this network under the asynchronous
|
Here is the full state graph of this network under the asynchronous
|
||||||
dynamics:
|
dynamics:
|
||||||
#+NAME: simple-bn-sg
|
#+NAME: simple-bn-sg
|
||||||
#+BEGIN_SRC racket :results silent :var simple-bn=munch-table(simple-bn)
|
#+BEGIN_SRC racket :results silent :var simple-bn=munch-sexp(simple-bn)
|
||||||
(let* ([bn (nn (unorg simple-bn))]
|
(let* ([bn (nn (unorg simple-bn))]
|
||||||
[bn-asyn (make-asyn-dynamics bn)])
|
[bn-asyn (make-asyn-dynamics bn)])
|
||||||
(dotit (ppsg (build-full-boolean-state-graph bn-asyn))))
|
(dotit (ppsg (build-full-boolean-state-graph bn-asyn))))
|
||||||
|
@ -383,7 +383,7 @@ tab
|
||||||
Alternatively, you may prefer a slighty more compact representation
|
Alternatively, you may prefer a slighty more compact representation
|
||||||
of Boolean values as 0 and 1:
|
of Boolean values as 0 and 1:
|
||||||
#+NAME: simple-bn-sg-bool
|
#+NAME: simple-bn-sg-bool
|
||||||
#+BEGIN_SRC racket :results silent :var simple-bn=munch-table(simple-bn)
|
#+BEGIN_SRC racket :results silent :var simple-bn=munch-sexp(simple-bn)
|
||||||
(let* ([bn (nn (unorg simple-bn))]
|
(let* ([bn (nn (unorg simple-bn))]
|
||||||
[bn-asyn (make-asyn-dynamics bn)])
|
[bn-asyn (make-asyn-dynamics bn)])
|
||||||
(dotit (ppsgb (build-full-boolean-state-graph bn-asyn))))
|
(dotit (ppsgb (build-full-boolean-state-graph bn-asyn))))
|
||||||
|
@ -409,8 +409,8 @@ tab
|
||||||
These are the states which can be reached from it in at most 2
|
These are the states which can be reached from it in at most 2
|
||||||
steps:
|
steps:
|
||||||
#+NAME: simple-bn-some-state
|
#+NAME: simple-bn-some-state
|
||||||
#+HEADER: :var simple-bn=munch-table(simple-bn)
|
#+HEADER: :var simple-bn=munch-sexp(simple-bn)
|
||||||
#+HEADER: :var some-state=munch-table(some-state)
|
#+HEADER: :var some-state=munch-sexp(some-state)
|
||||||
#+BEGIN_SRC racket :results silent
|
#+BEGIN_SRC racket :results silent
|
||||||
(let* ([bn (nn (unorg simple-bn))]
|
(let* ([bn (nn (unorg simple-bn))]
|
||||||
[bn-asyn (make-asyn-dynamics bn)]
|
[bn-asyn (make-asyn-dynamics bn)]
|
||||||
|
@ -430,7 +430,7 @@ tab
|
||||||
Here is the complete state graph with edges annotated with the
|
Here is the complete state graph with edges annotated with the
|
||||||
modality leading to the update.
|
modality leading to the update.
|
||||||
#+NAME: simple-bn-sg-bool-ann
|
#+NAME: simple-bn-sg-bool-ann
|
||||||
#+BEGIN_SRC racket :results silent :var simple-bn=munch-table(simple-bn)
|
#+BEGIN_SRC racket :results silent :var simple-bn=munch-sexp(simple-bn)
|
||||||
(let* ([bn (nn (unorg simple-bn))]
|
(let* ([bn (nn (unorg simple-bn))]
|
||||||
[bn-asyn (make-asyn-dynamics bn)])
|
[bn-asyn (make-asyn-dynamics bn)])
|
||||||
(dotit (ppsgb (build-full-boolean-state-graph-annotated bn-asyn))))
|
(dotit (ppsgb (build-full-boolean-state-graph-annotated bn-asyn))))
|
||||||
|
@ -452,7 +452,7 @@ tab
|
||||||
| b | b |
|
| b | b |
|
||||||
|
|
||||||
#+NAME: bn2-sgr
|
#+NAME: bn2-sgr
|
||||||
#+BEGIN_SRC racket :results silent :var input-bn=munch-table(bn2)
|
#+BEGIN_SRC racket :results silent :var input-bn=munch-sexp(bn2)
|
||||||
(let* ([bn (nn (unorg input-bn))]
|
(let* ([bn (nn (unorg input-bn))]
|
||||||
[bn-asyn (make-asyn-dynamics bn)])
|
[bn-asyn (make-asyn-dynamics bn)])
|
||||||
(dotit (ppsgb (build-full-boolean-state-graph-annotated bn-asyn))))
|
(dotit (ppsgb (build-full-boolean-state-graph-annotated bn-asyn))))
|
||||||
|
@ -478,7 +478,7 @@ tab
|
||||||
|
|
||||||
Here is how we read this reaction into Racket code:
|
Here is how we read this reaction into Racket code:
|
||||||
|
|
||||||
#+BEGIN_SRC racket :results output drawer :var input-rs=munch-table(rs1)
|
#+BEGIN_SRC racket :results output drawer :var input-rs=munch-sexp(rs1)
|
||||||
(unorg-rs input-rs)
|
(unorg-rs input-rs)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ tab
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
Here is how we can put it back into an Org-mode table:
|
Here is how we can put it back into an Org-mode table:
|
||||||
#+BEGIN_SRC racket :results table drawer :var input-rs=munch-table(rs1)
|
#+BEGIN_SRC racket :results table drawer :var input-rs=munch-sexp(rs1)
|
||||||
(org-rs (unorg-rs input-rs))
|
(org-rs (unorg-rs input-rs))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ tab
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
Here is how we can apply this reaction system to a state:
|
Here is how we can apply this reaction system to a state:
|
||||||
#+BEGIN_SRC racket :results output drawer :var input-rs=munch-table(rs1)
|
#+BEGIN_SRC racket :results output drawer :var input-rs=munch-sexp(rs1)
|
||||||
(let ([rs (unorg-rs input-rs)])
|
(let ([rs (unorg-rs input-rs)])
|
||||||
(apply-rs rs (set 'x 't)))
|
(apply-rs rs (set 'x 't)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
@ -510,7 +510,7 @@ tab
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
Let's see which reactions got applied:
|
Let's see which reactions got applied:
|
||||||
#+BEGIN_SRC racket :results list :var input-rs=munch-table(rs1)
|
#+BEGIN_SRC racket :results list :var input-rs=munch-sexp(rs1)
|
||||||
(let ([rs (unorg-rs input-rs)])
|
(let ([rs (unorg-rs input-rs)])
|
||||||
(list-enabled rs (set 'x 't)))
|
(list-enabled rs (set 'x 't)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
Loading…
Reference in a new issue