1 #+title: Universal Language
2 #+author: Richard Westhaver
3 #+email: ellis@rwest.io
4 #+setupfile: ../clean.theme
7 :ID: e63d129f-9024-4cd8-9e2c-77f4bc614663 9 This document describes a
*U-Language* as described by the late great
10 [[https://iep.utm.edu/haskell-brooks-curry/][Haskell Curry]]:
12 Every investigation, including the present one, has to be communicated
13 from one person to another by means of language. It is expedient to
14 begin our study by calling attention to this obvious fact, by giving a
15 name to the language being used, and by being explicit about a few of
16 its features. We shall call the language being used the
17 U-Language. [...] There would be no point in calling attention to it,
18 if it were not for the fact that language is more intimately related
19 to our job than of most others.
22 In this document, we will be calling attention to our own language -
23 examining it, and describing how it works.
25 Our job is to solve problems. Hard problems preferred. So we ought to
26 pay close attention to the language we use because it brings the
27 reader and writer
/closer/ to the problem at hand.
29 For starters, we are primarily concerned with
/written languages/ like
30 the one you're reading now. We will skip past the obvious details -
31 English is our primary form of communication for example. The line you
32 are reading currently is a sentence which is part of a paragraph.
34 - This document is for authors and curious readers. It is a loose
35 specification, but also serves as introductory material into our
36 communication style and design philosophy.
37 - All sources we write attempt to comply to this standard but it is
38 not strictly enforced. If there is a reason to not comply with a
39 rule, it is already broken.
43 :ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1 45 [[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally
[[https://orgmode.org/][Org Mode]] is our word
48 If you are already familiar with Emacs and Org-Mode, I recommend
49 opening the source of this document in Emacs and following along.
51 If not, I recommend browsing through the
[[https://orgmode.org/worg/][Worg resources]], but we won't
52 be getting too deep into tribal hacker knowledge of Emacs.
57 :ID: 236227a5-b30c-4548-8cad-360428d74d67 59 Our
*U-Language* is colloquially termed
*ulang*. Each section of this
60 document describes a feature of our ulang.
63 :ID: 88bf1177-b5b7-4945-8bdc-5229803e617e 65 We derive all text emphasis syntax for rich contents from
[[https://orgmode.org/manual/Emphasis-and-Monospace.html][Org Mode]].
82 Text emphasis markers may be embedded in any syntax as long as it does
83 not cause any conflicts with the host language.
86 :ID: 7ecaec5d-c656-44e1-8fad-185915655cee 90 :ID: 6aedc026-36d0-4763-adc8-8ae1a79f1b3e 95 :ID: ed035298-f7fa-4726-ad58-2d542323bb61 97 In Org, headings can be summarize as any line starting with a star:
=* 98 H1=. Headings can be nested or 'demoted' by prepending another star:
110 This is a useful pattern which we apply outside of Org - most commonly
111 in our code comments.
113 In our source code, we use the comment character instead of a star:
114 #+name: lisp-headings
117 (print "H1") ;; just an inline comment
124 #+name: rust-headings
136 :ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba 139 TODO keywords are often used to keep track of the state of a
[[https://orgmode.org/manual/TODO-Items.html][TODO 140 Item]], but may also be
[[https://orgmode.org/manual/TODO-Extensions.html][extended]] to support a variety of stateful item
141 types beyond just simple tasks.
143 The following keywords form the simple set of task states.
163 :ID: a7ae1b2a-559e-46e9-8cab-33e39a218288 165 [[https://orgmode.org/manual/Tags.html][Tags]] are used liberally throughout our documents. They are simple
166 strings usually following a headline as a
=:=-separated list.
168 A tag can be any text without newlines, although it is recommended to
169 treat them as unique identifiers and usage of whitespace is
170 discouraged (but not disallowed).
173 ,* foobar :tag1:tag2:@home:!today
177 :ID: b686dbc5-3505-49d7-b66a-0772bcf1a726 179 Some of ourtags are prefixed with a character which indicates a
180 special tag category:
181 - =@= :: location-tag
\\ 182 A
/location tag/ refers to some context-dependent named point in
183 space, such as a user's home address, a popular fast food
184 restaurant, or a specific room found in most houses.
185 - =@home=,
=@taco-bell=,
=@bedroom= 186 - =!= :: timestamp-tag
\\ 187 /Timestamp tags/ refer to some point in time, often named for
188 convenience. You may use literal
[[https://orgmode.org/manual/Timestamps.html][Timestamps]] too. Timestamp tags
189 should not
/directly reference/ scheduling information, doing so is
191 - =!now=,
=!christmas=,
=!someday= 192 - =#= :: anchor-tag
\\ 193 An
/anchor tag/ implies a link to the object identified by some
[[id:3944c851-e46c-4d75-b8f5-07b5c052177a][ID]].
194 - =#readme=,
=#a7ae1b2a-559e-46e9-8cab-33e39a218288=,
=#custom-id= 197 :ID: 174a993b-a5dc-4324-b4f8-dda8101a55b7 199 [[https://orgmode.org/manual/Properties-and-Columns.html][Properties]] are key:value pairs which are associated with a heading or
200 file and stored in a dedicated
[[https://orgmode.org/manual/Drawers.html][Drawer]].
203 ,* WIP do stuff :@lab:
205 :CREATED: <2024-08-24 Sat 19:09>
206 :ID: 62da3982-7a83-4b27-ab7e-55949fd3e2a3
212 :ID: 3944c851-e46c-4d75-b8f5-07b5c052177a 214 We reference two different types of identifiers in documentation:
215 - UUID :: =ID= property
216 - User-defined :: =CUSTOM_ID= property
218 Most of the time these IDs don't add any information for the reader -
219 the UUIDs are used to index and graph documents, CUSTOM_IDs are for
220 convenience and extensions, but are rarely necessary given the many
221 ways of identifying a headline.
223 All headings are assigned an ID automatically and are never changed.