https://pastebin.com/vJS32FyL is a coherent explanation from before. The current state is... hilarious. An alternative to e.g. the spec or scenarios below. (You can e.g. make a type/predicate like
is-profitable? on a trading strategy or is-a-good-value-investment-pick? for a company's valuation and then Prolog your way through the data and some human-performed tasks to determine it.)Is it something you may eventually release and advocate for?
I was 10x coding for a while (super siloed, throwing out undocumented experiments left and right, depending on yet others). I'm now trying to polish and release the dependencies. My type thing grew out of declarative/logic testing experiments (where everything's a predicate) (currently a big folder with names like logic-testing14.janet logic-tests17.janet where I rewrote full things with various APIs). Circling back to the actual topic of this thread, you have to use something a lot to see whether changes complect etc.
A predicate can:
- check - pred over domain collecting results
- counterexample - find input where pred fails
- witness - find input where pred holds
- shrink - minimize failing input
- contract - enforce pred at boundary (i.e. add runtime tests/asserts?)
- monitor - record calls (so bugs/failures add to the test suite automatically)
- replay - rerun recorded calls
- compare-fns - find how 2 funcs diverge, so an old implementation works as a test when refactoring
- audit-spec - validate spec (quality)
- spec->doc - make spec into docs
...you can then use this in backtests on time series data or for company valuations. So it's half a prologish program/spec expressing goals and...
https://lobste.rs/c/oyg5km
