Skip to content

Commit 7c1c324

Browse files
committed
Add: Libs and packages by Toby Cubitt
1 parent 102c5d1 commit 7c1c324

File tree

2 files changed

+148
-8
lines changed

2 files changed

+148
-8
lines changed

README.org

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,46 @@ Includes these functions:
644644
:archive.today: http://archive.today/YxwP5
645645
:END:
646646

647+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][Toby 'qubit' Cubitt: Data structure packages]]
648+
649+
Individual libraries from this article are listed below.
650+
651+
*** Libraries :libraries:
652+
653+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][heap.el]]
654+
655+
#+BEGIN_QUOTE
656+
A heap is a form of efficient self-sorting tree. In particular, the root node is guaranteed to be the highest-ranked entry in the tree. (The comparison function used for ranking the data can, of course, be freely defined). They are often used as priority queues, for scheduling tasks in order of importance, and for implementing efficient sorting algorithms (such as heap-sort).
657+
#+END_QUOTE
658+
659+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][queue.el]] :queue:
660+
661+
#+BEGIN_QUOTE
662+
A queue can be used both as a first-in last-out and as a first-in first-out stack, i.e. elements can be added to and removed from the front or back of the queue. (This library is an updated re-implementation of the old Elib queue library.)
663+
#+END_QUOTE
664+
665+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][Tagged Non-deterministic Finite state Automata (tNFA.el)]]
666+
667+
#+BEGIN_QUOTE
668+
Features of modern regexp implementations, including Emacs', mean they can recognise much more than regular languages. This comes with a big downside: matching certain pathological regexps is very time-consuming. (In fact, it's NP-complete.)
669+
670+
A tagged, non-deterministic finite state automata (NFA) is an abstract computing machine that recognises regular languages. In layman's terms, they are used to decide whether a string matches a regular expression. The "tagged" part lets the NFA do group-capture: it returns information about which parts of a string matched which subgroup of the regular expression.
671+
672+
Why re-implement regular expression matching when Emacs comes with extensive built-in support for regexps? Primarily, because some algorithms require access to the NFA states produced part way through the regular expression matching process. Secondarily, because Emacs regexps only work on strings, whereas regular expressions can equally well be used to match other Lisp sequence types.
673+
#+END_QUOTE
674+
675+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][trie.el]]
676+
677+
#+BEGIN_QUOTE
678+
A trie stores data associated with "strings" (not necessarily the string data type; any ordered sequence of elements can be used). It stores them in such a way that both storage size and data lookup are reasonably space- and time- efficient, respectively. But, more importantly, advanced string queries are also very efficient, such as finding all strings with a given prefix, finding approximate matches, finding all strings matching a regular expression, returning results in alphabetical or any other order, returning only the first few results, etc.
679+
#+END_QUOTE
680+
681+
**** [[http://www.dr-qubit.org/emacs_data-structures.html][dict-tree.el]]
682+
683+
#+BEGIN_QUOTE
684+
The dictionary tree data structures are a hybrid between tries and hash tables. Data is stored in a trie, but results that take particularly long to retrieve are cached in hash tables, which are automatically synchronised with the trie. The dictionary package provides persistent storage of the data structures in files, and many other convenience features.
685+
#+END_QUOTE
686+
647687
** Date / Time :dates:times:
648688

649689
*** Libraries :libraries:
@@ -3132,7 +3172,11 @@ Especially =easy-mmode-defmap=.
31323172

31333173
*** TODO [[https://www.lunaryorn.com/posts/syntactic-fontification-in-emacs][Syntactic fontification in Emacs]] (10 min read)
31343174

3135-
** TODO Add people [0/6]
3175+
** TODO Add people [0/7]
3176+
3177+
*** TODO Add Toby Cubitt
3178+
3179+
A variety of packages published, e.g. at http://www.dr-qubit.org/emacs_data-structures.html
31363180

31373181
*** TODO Add [[http://nic.ferrier.me.uk/][Nic Ferrier]]
31383182

index.html

Lines changed: 103 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)