Extended core library for Clojure/Script that emphasizes:
This lib's mostly for my own use and for advanced users that feel comfortable reading this source. Not providing much beginner-oriented documentation for this, sorry.
Quick Taoensso naming conventions:
foo - Dynamic var
foo! - Fn with side effects, or that should otherwise be used cautiously
foo? - Truthy val or fn that returns truthy val
foo!? - Fn that has side effects (or requires caution) and that return
a truthy val. Note: !?, not ?!
foo$ - Fn that's notably expensive to compute (e.g. hits db)
foo_ - Derefable val (e.g. atom, volatile, delay, etc.)
foo__ - Derefable in a derefable (e.g. delay in an atom), etc.
_ - Unnamed val
_foo - Named but unused val
?foo - Optional val (emphasize that val may be nil)
foo* - A variation of foo
(e.g. foo*
macro vs foo
fn)
foo' - ''
-foo - Public implementation detail or intermediate (e.g. uncoerced) val
foo - Val "to foo" (e.g. >sender, >host), or fn to put/coerce/transform <foo - Val "from foo" (e.g. <sender, <host), or fn to take/coerce/transform ->foo - Fn to put/coerce/transform
Type affixes may be used for clarity: <prefix>-<name> - m-users, v-users, n-users, etc. (also nusers when unambiguous) <name>-<postfix> - users-map, users-vec, user-count, etc.
Regarding name heirarchy:
When there's a significant num of syms with a meaningful hierarchy,
prefer names with descending hierarchy to emphasize structure and
related groups/functionality, e.g.:
user-add
, user-remove
, user-mod
vs
add-user
, remove-user
, mod-user
, etc.
Commit message tags (in priority order): [wip] - Work-in-progress (still under development)
[mod] - Modify behaviour (=> breaking), [mod!], [mod!!], etc. for attention [fix] - Fix broken behaviour (=> usu. non-breaking) [new] - Add new behaviour (=> non-breaking)
[doc] - Documentation changes besides those better labelled as [mod], [fix], or [new] [nop] - Other non-breaking changes (to implementation details, non-code changes, etc.)
[x] [y] - Single commit with multiple tags (in priority order), try avoid
Example commit messages: v1.0.0 (2022-01-27) ; Tagged release [new] [#122] Add new feature x (@contributor)
Version numbers: Ver tables: X.Y.Z (without backticks) Min ver: vX.Y.Z+ Elsewhere: vX.Y.Z
Extended core library for Clojure/Script that emphasizes: * Cross-platform API * Flexibility * Performance * Backwards compatibility This lib's mostly for my own use and for advanced users that feel comfortable reading this source. Not providing much beginner-oriented documentation for this, sorry. Quick Taoensso naming conventions: **foo** - Dynamic var foo! - Fn with side effects, or that should otherwise be used cautiously foo? - Truthy val or fn that returns truthy val foo!? - Fn that has side effects (or requires caution) and that return a truthy val. Note: !?, not ?! foo$ - Fn that's notably expensive to compute (e.g. hits db) foo_ - Derefable val (e.g. atom, volatile, delay, etc.) foo__ - Derefable in a derefable (e.g. delay in an atom), etc. _ - Unnamed val _foo - Named but unused val ?foo - Optional val (emphasize that val may be nil) foo* - A variation of `foo` (e.g. `foo*` macro vs `foo` fn) foo' - '' -foo - Public implementation detail or intermediate (e.g. uncoerced) val >foo - Val "to foo" (e.g. >sender, >host), or fn to put/coerce/transform <foo - Val "from foo" (e.g. <sender, <host), or fn to take/coerce/transform ->foo - Fn to put/coerce/transform Type affixes may be used for clarity: <prefix>-<name> - m-users, v-users, n-users, etc. (also nusers when unambiguous) <name>-<postfix> - users-map, users-vec, user-count, etc. Regarding name heirarchy: When there's a significant num of syms with a meaningful hierarchy, prefer names with descending hierarchy to emphasize structure and related groups/functionality, e.g.: `user-add`, `user-remove`, `user-mod` vs `add-user`, `remove-user`, `mod-user`, etc. Commit message tags (in priority order): [wip] - Work-in-progress (still under development) [mod] - Modify behaviour (=> breaking), [mod!], [mod!!], etc. for attention [fix] - Fix broken behaviour (=> usu. non-breaking) [new] - Add new behaviour (=> non-breaking) [doc] - Documentation changes besides those better labelled as [mod], [fix], or [new] [nop] - Other non-breaking changes (to implementation details, non-code changes, etc.) [x] [y] - Single commit with multiple tags (in priority order), try avoid Example commit messages: v1.0.0 (2022-01-27) ; Tagged release [new] [#122] Add new feature x (@contributor) Version numbers: Ver tables: X.Y.Z (without backticks) Min ver: vX.Y.Z+ Elsewhere: vX.Y.Z
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close