So am I eligible for some kind of reinventing the wheel award at Rackcon
2012?
On Thu, May 24, 2012 at 1:53 PM, Eli Barzilay wrote:
A relevant side-comment is that this is a popular way for implementing
tail-calls:
http://en.wikipedia.org/wiki/Tail_call#Through_trampolining
20 minutes ago, Galler wrote:
Y, that's closer to what I had in mind.
On Thu, May 24, 2012 at 1:18 PM, Eli Barzilay wrote:
Just now, Galler wrote:
Eli,
I fully agree with you that any FSM is equivalent to functional
composition and can be implemented in the manner you show.
However , in the way you've implemented the signal-handlers
(define (B i)
(if (= 0 (get i))
(begin (printf "~s)" (sub1 i))
(next A i))
I believe you have the signal handler B both reading the signal
(get i) and advancing to the next position in the signal-stream
(next A i)
IIUC, you could do that with something like this:
(define (encode v)
(define (get i) (vector-ref v i))
(define last (sub1 (vector-length v)))
(define (next S i) (when (< i last) (S (add1 i))))
(define (B signal i)
(if (= 0 signal)
(begin (printf "~s)" (sub1 i))
A)
B))
(define (A signal i)
(if (= 0 signal)
A
(begin (printf "(~s " i)
B)))
(for/fold ([state A]) ([signal (in-vector v)] [i (in-naturals)])
(state signal i)))
But it seems redundant since the abstraction was practically there
in
`next'.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli
Barzilay:
http://barzilay.org/ Maze is
Life!
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli
Barzilay:
http://barzilay.org/ Maze is
Life!
____________________
Racket Users list:
http://lists.racket-lang.org/users