aboutsummaryrefslogtreecommitdiff
path: root/example
AgeCommit message (Collapse)Author
2015-03-15Updated _Turing machine_ comments to reflect tape loggingHEADmasterAdrian Kummerlaender
2015-03-14Implemented basic tape log printout in _Turing_ exampleAdrian Kummerlaender
* `machine::simulate` now returns a list of all tape states and corresponding head positions * rewrote some of the actual print logic in terms _TypeAsValue_
2015-03-07Changed `tav::Apply` implementation selection to template aliasAdrian Kummerlaender
* there is no reason to differ from the rest of the library and use inheritance in this instance * added link to blog article on the _Scheme metaphor_ to `README.md`
2015-02-24Replaced `utility::defer_eval` with placeholder-less `Apply`Adrian Kummerlaender
* usage of `Apply` sans placeholders was already possible and as such duplicated `utility::defer_eval` * renamed `apply_none`'s type alias from to `type` to enable combining it with `Eval`
2015-02-23Added binary incrementer state table to Turing machine exampleAdrian Kummerlaender
* reintroduced `BLANK` as the _BLANK_ symbol * fixed implicit tape expansion in `tape::readSymbol`
2015-02-22Improved `simulate` function of the Turing machine exampleAdrian Kummerlaender
* introduced `state::state_accessor` helper function and moved position logic into `updatePosition` * added `IsEqual` comparator and expressed other basic comparators in terms of itself
2015-02-21Added `README.md` to the Turing machine exampleAdrian Kummerlaender
2015-02-21Moved Turing machine printing into separate functionAdrian Kummerlaender
2015-02-21Separated Turing machine implementation into componentsAdrian Kummerlaender
* i.e. separate namespaces and headers for _Tape_ and _State_ functions * `void` is now used as the `BLANK` field value
2015-02-21Implemented basic Turing machine as an exampleAdrian Kummerlaender
* executes and prints the _Busy Beaver_ and _Mirror_ state transitions * this example demonstrates how one may use _TypeAsValue_ to simplify and augment normal statically recursive template metaprograms where it makes sense
2015-02-15Moved class-based implementations into `detail` namespaceAdrian Kummerlaender
* while class templates enable e.g. hiding implementation details they also require evaluation via `Eval` ** this clutters up the actual logic and is now hidden behind aliae that perform the evaluation
2015-02-14Introduced `Eval` function evaluation helperAdrian Kummerlaender
* replaces `typename *::type` constructs with `Eval` applications * aims to further unify function evaluation
2015-02-13Renamed `Apply`'s template alias to `function`Adrian Kummerlaender
* `type` is used to represent evaluation of a template * accessing the `function` doesn't evaluate it as it is the template itself
2015-02-12Added `Is` prefix to `EqualValue` and `EqualType`Adrian Kummerlaender
* analogously to `IsPair`
2015-02-12Revamped partial function applicationAdrian Kummerlaender
* moved internals into separate header i.e. the `detail` namespace relating to `Apply` * implemented automatic alias selection by implementing aliae of the basic variadic `type` template alias in different base classes ** variadic partial application is implemented in `detail::apply_variadic` *** `detail::apply_single` and `detail::apply_pair` define aliae to `detail::apply_variadic`'s `type` template alias *** both restricted aliae derive from `detail::apply_variadic` ** `Apply` derives from any of the aliae defining base classes depending on the count of placeholders as determined by `detail::count_placeholders` *** `Apply` is guaranteed to always be derived from `detail::apply_variadic` one way or the other * changed functions, test cases and examples depending on `Apply` accordingly ** `Length` had to be reimplemented without `Apply` as it doesn't allow usage of aliae expecting a different count of arguments anymore *** this is a advantage in the sense that core functionality of _TypeAsValue_ now doesn't depend on this complex partial application implementation anymore *** such functionality may be reimplemented separately from `Apply` * removed unnecessary `tav` namespace prefixes
2015-02-08Added _Scheme_ variant of prime example as documentationAdrian Kummerlaender
2015-02-06Revamped to use `Cons` as a function and `Pair` as its resultAdrian Kummerlaender
* this is analogous to _Scheme_ where a pair (dot-expression) is returned from a call to `cons` * `Head` and `Tail` are kept as direct references to the `CAR` and `CDR` values of a pair to match e.g. the math operators
2015-02-05Reimplemented `removeMultiplesOf` in terms of a partial function applicationAdrian Kummerlaender
2015-02-04Implemented the Sieve of Eratosthenes as a basic exampleAdrian Kummerlaender