klä
An LFE Wrapper Library used to Dress Up Erlang Libraries in a Lispy Costume
Table of Contents
↟
IntroductionThis is a utility library created and used simply for aesthetics.
↟
DependenciesAs of version 0.5.0, this project assumes that you have
rebar3 installed somwhere in your $PATH
.
It no longer uses the old version of rebar. If you do not wish to use rebar3,
you may use the most recent rebar2-compatible release of kla: 0.4.2.
↟
InstallationJust add it to your rebar.config
deps:
{deps, [
...
{kla, "0.9.1"}
]}.
And then do the usual:
$ rebar compile
↟
UsageTo use this library, one does the following (usually in an include file):
- Create a function that returns a list of function names as they would be called in an LFE application.
- Create a generator function that will convert these to Erlang names and then look them up in the specified Erlang module.
- Call the generate function in the include.
- Use the include in your application.
The moneta project makes heavy use of kla
; here's an excerpt of the "query" include file:
(eval-when-compile
(defun get-api-funcs ()
'((append 1) (append 2)
(cursor 1) (cursor 2)
(delete-cursor 1)
(eval 1) (eval 2)
(e 1) (e 2)
(fold 3) (fold 4)
(format-error 1)
(info 1) (info 2)
(keysort 2) (keysort 3)
(next-answers 1) (next-answers 2)
(q 1) (q 2)
(sort 1) (sort 2)
(string-to-handle 1) (string-to-handle 2) (string-to-handle 3)
(table 2))))
(defmacro generate-api ()
`(progn ,@(kla:make-funcs (get-api-funcs) 'qlc)))
(generate-api)
Then, in the library source file mnt-qry
:
(defmodule mnt-qry
(export all))
(include-lib "moneta/include/mnt-qry.lfe")
at which point all the functions listed in get-api-funcs
are now available for use in mnt-qry
. Calling the Lisp-style functions in mnt-qry
will result in calls to the under-score functions in the Erlang qlc
library.