diff options
author | Adrian Kummerlaender | 2015-03-15 11:37:19 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2015-03-15 11:37:19 +0100 |
commit | 47a81aa2629fe3c729ded7ea6ce2f5eb06e895c4 (patch) | |
tree | 77326acce23688628300f2597cff03ce3233cbc1 /example/turing | |
parent | 73be8fb60adc4723421e73d38331f793f1d16886 (diff) | |
download | TypeAsValue-master.tar TypeAsValue-master.tar.gz TypeAsValue-master.tar.bz2 TypeAsValue-master.tar.lz TypeAsValue-master.tar.xz TypeAsValue-master.tar.zst TypeAsValue-master.zip |
Diffstat (limited to 'example/turing')
-rw-r--r-- | example/turing/src/machine.h | 18 | ||||
-rw-r--r-- | example/turing/turing.cc | 11 |
2 files changed, 21 insertions, 8 deletions
diff --git a/example/turing/src/machine.h b/example/turing/src/machine.h index 4a72d94..97cbe4d 100644 --- a/example/turing/src/machine.h +++ b/example/turing/src/machine.h @@ -33,16 +33,18 @@ using updatePosition = tav::Cond< // (define (simulate transition tape state position) // (if (= state FINAL) -// tape +// (cons '(position . tape) +// '()) // (let ((current_state (transition state // (readSymbol position tape)))) -// (simulate transition -// (current_state NEXT) -// (writeSymbol position -// (current_state WRITE) -// tape) -// (updatePosition (current_state MOVE) -// position))))) +// (cons '(position tape) +// (simulate transition +// (current_state NEXT) +// (writeSymbol position +// (current_state WRITE) +// tape) +// (updatePosition (current_state MOVE) +// position)))))) template < template<typename, typename> class Transition, typename State, diff --git a/example/turing/turing.cc b/example/turing/turing.cc index f015e02..c951c5a 100644 --- a/example/turing/turing.cc +++ b/example/turing/turing.cc @@ -53,14 +53,22 @@ const auto printField = [](const auto x) { template <typename States> void printStates() { + // (define position (car (head states))) using position = tav::Car<tav::Head<States>>; + // (define tape (cdr (head states))) using tape = tav::Cdr<tav::Head<States>>; + // (define prefix (make-list 3 " ")) using prefix = tav::MakeList<tav::Size<3>, tav::Char<' '>>; + // (for-each printField (concatenate prefix tape)) tav::runtime::for_each<tav::Concatenate<prefix, tape>>(printField); std::cout << std::endl; + // (for-each printField + // (concatenate prefix + // (make-list position " ") + // (list "^"))) tav::runtime::for_each<tav::Concatenate< prefix, tav::MakeList<position, tav::Char<' '>>, @@ -83,6 +91,7 @@ int main(int, char **) { << std::endl; printStates< + // (run mirror 1 mirror_tape 0) machine::run< mirror, tav::Size<1>, @@ -98,6 +107,7 @@ int main(int, char **) { << std::endl; printStates< + // (run busy_beaver "A" busy_beaver_tape 6) machine::run< busy_beaver, tav::Char<'A'>, @@ -113,6 +123,7 @@ int main(int, char **) { << std::endl; printStates< + // (run binary_increment 0 binary_increment_tape 0) machine::run< binary_increment, tav::Size<0>, |