[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: [ANN] Microlight (was Re: paving cowpaths with libraries)
- From: steve donovan <steve.j.donovan@...>
- Date: Wed, 15 Feb 2012 11:50:47 +0200
Hi all,
Inspired by Jay's challenge to keep it simple & stupid, I've come up
with thirty-odd functions that cover a lot of the general boilerplate
code we end up writing. 'Microlight' because it's the trimmed-down
younger brother of Penlight, about 500 lines in total, of which 160
are doc comments.
https://gist.github.com/1834789
And the extracted docs are at
http://stevedonovan.github.com/microlight/
I was aiming at about 25 functions (which felt like a good number) but
naturally these things develop a momentum of their own; so I'm open to
dropping some to get something that fits nicely in the average head.
There is no 'shallow copy', but it's easy to make such a function.
extend(t,other) _extends_ an existing list-like table, and
update(t,other) _updates_ a map-like table with new key-value pairs.
So
icopy = bind1(extend,{})
tcopy = bind1(update,{})
There's also compose(), so that printf = compose(io.write,string.format).
There is a reasonably robust table dumper, but it's not pretty;
however it detects cycles and has a maximum-limit cut-off.
Not exhaustively tested - mostly culled from Penlight itself, which is
fairly well tested. The aim in any case is to make an _executable
proposal_ for a group of straightforward functions. It's particularly
hard to name things, so I need some help there.
(I threw in a reasonably brain-dead class implementation, just for luck)
steve d.