Skip to content

burn/old-glua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GLUA

(pronounced 'glue')

glua.lua

Some general LUA functions. (c)2022 Tim Menzies timm@ieee.org BSD-2 license

For examples on how to use this code, see https://tinyurl.com/gluaeg.

Linting

What Notes
l.rogues() ⇒ nil report rogue locals

Maths

What Notes
l.same(x, ...) ⇒ x return x unmodified
l.sd(ns:(num)+, fun:fun) ⇒ num return standard deviation

Random number generator

The LUA doco says its random number generator is not stable across platforms. Hence, we use our own (using Park-Miller).

What Notes
l.srand(n:num) ⇒ nil reset random number seed (defaults to 937162211)
l.rand(nlo:num, nhi:num) ⇒ num return float from nlo..nhi (default 0..1)
l.rint(nlo:num, nhi:num) ⇒ int returns integer from nlo..nhi (default 0..1)

Lists

What Notes
l.any(t:tab) ⇒ any return any item from t, picked at random
l.many(t:tab, n:num) ⇒ t return n items from t, picked at random
l.per(t:tab, p) ⇒ num return the pth(=.5) item of sorted list t
l.ent(t:tab) ⇒ num entropy
l.kap(t:tab, fun:fun) ⇒ t map function fun(k,v) over list (skip nil results)
l.keys(t:tab) ⇒ t sort+return t's keys (ignore things with leading _)
l.map(t:tab, fun:fun) ⇒ t map function fun(v) over list (skip nil results)
l.push(t:tab, x) ⇒ any push x to end of list; return x
l.slice(t:tab, go, stop:str, inc) ⇒ t return t from go(=1) to stop(=#t), by inc(=1)

Sorting Lists

What Notes
l.gt(s:str) ⇒ fun return a function that sorts ascending on `s'.
l.lt(s:str) ⇒ fun return a function that sorts descending on s.
l.sort(t:tab, fun:fun) ⇒ t return t, sorted by fun (default= <)

Coercion

Strings to Things

What Notes
l.coerce(s:str) ⇒ any return int or float or bool or string from s
l.options(s:str) ⇒ t parse help string to extract a table of options
l.csv(sFilename:str, fun:fun) ⇒ nil call fun on rows (after coercing cell text)

Things to Strings

What Notes
l.fmt(sControl:str, ...) ⇒ str emulate printf
l.oo(t:tab) ⇒ nil print t's string (the one generated by o)
l.o(t:tab, seen:str?) ⇒ str table to string (recursive)

Objects

What Notes
l.obj(s:str) ⇒ t create a klass and a constructor + print method

Test suite support

What Notes
l.cli(t:tab) ⇒ t alters contents of options in t from the command-line
l.run(t:tab, funs:(fun)+) ⇒ nfails runs all funs (or t.go), resetting options & seed before each

That's all folks.

About

general LUA functions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •