I have been seeking a system that will allow me to store all of my written 
output as structured data. After recently discovering Scribble, I think I may 
have found it (I really like the @-form syntax)! However, I think I need to 
make some changes to turn it into what I need, and that's where I could use 
some help.

I want to treat all of my written output as structured data first and foremost, 
which I could then traverse & transform into various documents as needed.

As an example, suppose I have taken notes on 100 different math books and have 
written down some 3000 theorems from these books. Throughout the rest of my 
life, there are a number of things I may want to do with these notes, such as:

  - In a REPL, get a list of all theorems I've ever written down.
  - In a REPL, for a given list xs of theorems, get a list of all references I 
have made to those theorems across all my written content.
  - Take theorems x and y and display them in a document.

At a finer granularity, within a theorem, I might reference a specific entity 
type that I deemed important enough to represent structurally, like, say 
`@math-term{finite list}` (or more likely as `@finite-list`, which expands to 
`@math-term{finite list}`). Years later, I may want to do something like 
'Traverse the list of all top-level entities that reference `(math-term "finite 
list")` anywhere within.'

Generalizing from those examples, I actually have a pretty broad ontology of 
entity types I am devising for different types of content I might write down. 
Things like:

  (ask scribble-devs "Advice for treating content as structured data ...")
  (tell scribble-devs "I love Scribble and its embedded @-form s-exprs!")
  (code [racket library] "I had an idea for a Scribble modification that...")
  (search [web] "Is there anything else out there like Scribble?")
  (explore [math] @{Is @theorem-ref{LADR/foo} about @finite-list related to 
@theorem-ref{IntroToProbability/bar} somehow?}
  (remember [happened-to-me] "Today I discovered Scribble and got very 

That `(explore ...)` example would show up in my REPL "list of all 
references...to those theorems [xs]" I mentioned in the example use cases 
earlier, because it references a `@theorem-def` I'm interested in.

Finally, something like `(math-term "finite list")`, when embedded into a 
document, should be able to render to html as '<span class="math-term">finite 
list</span>' and to TeX as "\textbf{finite list}", and I should be able to 
define new entity types & their content-type translations easily whenever 

To recap, I'm looking to treat my written output as structured datums/syntax 
objects/structs foremost, which I can traverse/combine/transform into documents 
as needed; I want to extend my ontology of datums easily whenever needed; I 
want to define translations of new datums into various content-types whenever 

Although Scribble is mostly document-oriented as it stands, my instincts tell 
me that the combination of Racket + Scribble's @-forms would make a great fit 
for my needs.

Do you think I could/should leverage Scribble for any of this? Do you have any 
advice on approaches I might try to get to where I want to be?

I realize those are extremely open-ended and vague questions. Feel free to 
answer at whatever level of granularity you have time for, if at all. I just 
wanted to gather suggestions from the world's premier Scribble experts before I 
begin writing any code.

You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to