diff options
author | thing1 <thing1@seacrossedlovers.xyz> | 2025-04-01 20:27:39 +0100 |
---|---|---|
committer | thing1 <thing1@seacrossedlovers.xyz> | 2025-04-01 20:27:39 +0100 |
commit | d3a5ddb4189ef7c04df0cc47a0f9642b23292d2d (patch) | |
tree | 14264483e4d2e6481abc74feea6d9cbcae3666d1 /elpa/llama-0.6.2/README.org | |
parent | dabaff03992c102c395314629f63ce93a2c1bd3a (diff) |
added magit and other general configs
Diffstat (limited to 'elpa/llama-0.6.2/README.org')
-rw-r--r-- | elpa/llama-0.6.2/README.org | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/elpa/llama-0.6.2/README.org b/elpa/llama-0.6.2/README.org new file mode 100644 index 0000000..42134f2 --- /dev/null +++ b/elpa/llama-0.6.2/README.org @@ -0,0 +1,68 @@ +* Llama — Compact syntax for short lambda + +This package implements a macro named ~##~, which provides a compact way +to write short ~lambda~ expressions. + +The signature of the macro is ~(## FN &rest BODY)~ and it expands to a +~lambda~ expression, which calls the function ~FN~ with the arguments ~BODY~ +and returns the value of that. The arguments of the ~lambda~ expression +are derived from symbols found in ~BODY~. + +Each symbol from ~%1~ through ~%9~, which appears in an unquoted part +of ~BODY~, specifies a mandatory argument. Each symbol from ~&1~ through +~&9~, which appears in an unquoted part of ~BODY~, specifies an optional +argument. The symbol ~&*~ specifies extra (~&rest~) arguments. + +The shorter symbol ~%~ can be used instead of ~%1~, but using both in +the same expression is not allowed. Likewise ~&~ can be used instead +of ~&1~. These shorthands are not recognized in function position. + +To support binding forms that use a vector as ~VARLIST~ (such as ~-let~ +from the ~dash~ package), argument symbols are also detected inside of +vectors. + +The space between ~##~ and ~FN~ can be omitted because ~##~ is read-syntax +for the symbol whose name is the empty string. If you prefer you can +place a space there anyway, and if you prefer to not use this somewhat +magical symbol at all, you can instead use the alternative name ~llama~. + +Instead of: + +#+begin_src emacs-lisp + (lambda (a &optional _ c &rest d) + (foo a (bar c) d)) +#+end_src + +you can use this macro and write: + +#+begin_src emacs-lisp + (##foo %1 (bar &3) &*) +#+end_src + +which expands to: + +#+begin_src emacs-lisp + (lambda (%1 &optional _&2 &3 &rest &*) + (foo %1 (bar &3) &*)) +#+end_src + +Unused trailing arguments and mandatory unused arguments at the border +between mandatory and optional arguments are also supported: + +#+begin_src emacs-lisp + (##list %1 _%3 &5 _&6) +#+end_src + +becomes: + +#+begin_src emacs-lisp + (lambda (%1 _%2 _%3 &optional _&4 &5 _&6) + (list %1 &5)) +#+end_src + +Note how ~_%3~ and ~_&6~ are removed from the body, because their names +begin with an underscore. Also note that ~_&4~ is optional, unlike the +explicitly specified ~_%3~. + +Consider enabling ~llama-fontify-mode~ to highlight ~##~ and its special +arguments. |