[plt-scheme] Recursive types and their specification

From: Robby Findler (robby at cs.uchicago.edu)
Date: Tue Aug 9 11:23:09 EDT 2005

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 
>  



Posted on the users mailing list.