2015-03-18 13:50:06 -04:00
|
|
|
# TAME Core
|
|
|
|
Core library for TAME, providing generic abstractions for common
|
|
|
|
operations.
|
|
|
|
|
|
|
|
This library has accumulated a bit of cruft, is disorganized, and has
|
|
|
|
not been substantially refactored to take advantage of new language
|
|
|
|
features. It is a work in progress.
|
|
|
|
|
|
|
|
This is also of limited use to others outside of LoVullo, since TAME
|
|
|
|
has not yet been liberated.
|
|
|
|
|
2015-03-25 11:49:08 -04:00
|
|
|
**BC Warning:** Backwards-incompatible changes will be made in
|
|
|
|
minor/revision releases until the release of v1.0.
|
|
|
|
|
2015-03-18 13:50:06 -04:00
|
|
|
|
|
|
|
## Features
|
|
|
|
- BDD abstraction;
|
|
|
|
- Classification match manipulation;
|
|
|
|
- Common operations on numbers;
|
|
|
|
- Conditional evaluation helpers;
|
|
|
|
- Core primitive declarations;
|
|
|
|
- Interpolation;
|
|
|
|
- Interval mapping;
|
|
|
|
- Matrix and vector manipulation;
|
|
|
|
- Query matrices as data tables;
|
|
|
|
- Value mappings; and
|
|
|
|
- Other miscellaneous stuff.
|
|
|
|
|
|
|
|
|
|
|
|
## What is TAME?
|
|
|
|
TAME is The Adaptive MetalanguagE, a programming language and system of tools
|
|
|
|
designed to aid in the development, understanding, and maintenance of systems
|
|
|
|
performing numerous calculations on a complex graph of dependencies,
|
|
|
|
conditions, and a large number of inputs.
|
|
|
|
|
|
|
|
This system was developed at LoVullo Associates to handle the complexity of
|
|
|
|
comparative insurance rating systems. It is a domain-specific language (DSL)
|
|
|
|
that itself encourages, through the use of templates, the creation of sub-DSLs.
|
|
|
|
TAME itself is at heart a calculator—processing only numerical input and
|
|
|
|
output—driven by quantifiers as predicates. Calculations and quantifiers are
|
|
|
|
written declaratively without concern for order of execution.
|
|
|
|
|
|
|
|
The system has powerful dependency resolution and data flow capabilities.
|
|
|
|
|
|
|
|
TAME consists of a macro processor (implementing a metalanguage), numerous
|
|
|
|
compilers for various targets (JavaScript, HTML documentation and debugging
|
|
|
|
environment, LaTeX, and others), linkers, and supporting tools. The input
|
|
|
|
grammar is XML, and the majority of the project (including the macro processor,
|
|
|
|
compilers, and linkers) are written in XSLT. There is a reason for that odd
|
|
|
|
choice; until an explanation is provided, know that someone is perverted enough
|
|
|
|
to implement a full compiler in XSLT.
|
|
|
|
|
|
|
|
More information will become available as various portions are liberated during
|
|
|
|
refactoring; [hoxsl](https://github.com/lovullo/hoxsl) is a product of what is
|
|
|
|
now known as TAME.
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
tame-core is free software: you can redistribute it and/or modify it
|
|
|
|
under the terms of the GNU Lesser General Public License as published
|
|
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
General Public License for more details.
|