[plt-scheme] Recursive types and their specification
Did you try using a datatype to do that?
Robby
At Tue, 9 Aug 2005 07:58:44 -0700 (PDT), Noel Welsh wrote:
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
> Hi all,
>
> I have what is really a general PL question, but I think
> might illustrate one way in which Scheme's
> un/uni/dynamically typed behaviour may be useful, so I'm
> asking here. I'm writing a little program to control
> Pacman. As a demo I have written the following FSM:
>
> (define (policy)
> (letrec
> ((down
> (lambda ()
> (values
> (e:make-down)
> (lambda ()
> (if (< (random) 0.4)
> (left)
> (down))))))
> (left
> (lambda ()
> (values
> (e:make-left)
> (lambda ()
> (if (< (random) 0.6)
> (right)
> (left))))))
> (right
> (lambda ()
> (values
> (e:make-right)
> (lambda ()
> (if (< (random) 0.4)
> (up)
> (right))))))
> (up
> (lambda ()
> (values
> (e:make-up)
> (lambda ()
> (if (< (random) 0.5)
> (up)
> (down)))))))
> (down)))
>
> The FSM returns two values: the action to take (up, down,
> left, or right) and the continuation for the policy. How
> does one specify the type of the continuation? It's a
> function that returns two values, the first of which is an
> action, and the second of which is a function that returns
> two values, the first of which...
>
> Is this something that would cause HM to blow up (I think
> so)? Does this show that Scheme is the One True Way? Does
> asking this question mean I have to revoke my LtU
> editorship (Ehud, I know you read this list :)?
>
> Thanks,
> Noel
>
> Email: noelwelsh <at> yahoo <dot> com noel <at> untyped <dot> com
> AIM: noelhwelsh
> Blogs: http://monospaced.blogspot.com/ http://www.untyped.com/untyping/
>
>
>
> ____________________________________________________
> Start your day with Yahoo! - make it your home page
> http://www.yahoo.com/r/hs
>