I think this should do it:

  (define-type (Listof* A) (Rec T (U A (Listof T))))
  (define-type Renderer-Tree (Listof* (U renderer2d nonrenderer)))

Neil ⊥

On 08/09/2012 01:56 PM, Ray Racine wrote:
I could try and and seed a few things out of plot into TR that I have an
immediate need for.   require/typed, optional args, opaque, typing Snips
as Class ... I can handle.

This one however ...
Suggestions on how one would type the following?

renderer-tree : (treeof (or/c renderer2d? nonrenderer?))

On Thu, Aug 9, 2012 at 3:27 PM, Neil Toronto <[email protected]
<mailto:[email protected]>> wrote:

    On 08/09/2012 12:52 PM, Ray Racine wrote:

        Noticed here
        http://www.ccs.neu.edu/home/__samth/adapt/Current_Status.__html
        <http://www.ccs.neu.edu/home/samth/adapt/Current_Status.html>


    I had no idea someone had been assigned. Cool!


        That the Plot collection still awaits porting to TR.  Has any
        partial
        work been done, maybe languishing in a github repo somewhere,
        that can
        be leveraged?


    Are you volunteering? :)

    It's only possible now that TR has support for keyword arguments.

    There's one issue that could cause problems: some renderer-producing
    functions, like `points', accept lists of vectors as arguments. If
    the data argument to `points' had a nice, general type like

        (Listof (Vectorof Real Real))

    then applying `points' to

        '(#(0.0 1.0) #(1.0 2.2))

    wouldn't typecheck. The problem is that TR thinks `points' might
    change that 0.0 to 0, which would make the original argument type
    (Listof (Vector Float Float)) incorrect. It thinks Bad Things could
    happen. (Technically, a vector is "invariant".)

    I can think of two solutions right now:

      1. Wait for a Const type constructor or similar.

      2. Change the contract of `points' to accept lists of pairs,
    sequences or a specialized data type.

    I think the contract of `points' should be changed anyway, so users
    can send it any kind of sequence. Might as well make it
    current-TR-friendly at the same time.

    Neil ⊥

    ____________________
      Racket Users list:
    http://lists.racket-lang.org/__users
    <http://lists.racket-lang.org/users>



____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to