[racket] Creating a useful snip

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Wed Apr 6 12:52:32 EDT 2011

Updating the docs is good regardless, I agree.

Robby

On Wed, Apr 6, 2011 at 11:42 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> It would've help me find the problem, but I already knew to look at
> the doc page for what to override, so if that is updated, I don't
> think I could be blamed.
>
> Jay
>
> 2011/4/5 Robby Findler <robby at eecs.northwestern.edu>:
>> Does it make sense to have snip%'s copy method signal an error instead
>> of returning a (useless) snip%? or maybe it could check and see if
>> this is a subclass and signal an error in that case?
>>
>> Robby
>>
>> On Tuesday, April 5, 2011, Matthias Felleisen <matthias at ccs.neu.edu> wrote:
>>>
>>> Please!
>>>
>>> On Apr 5, 2011, at 3:06 PM, Jay McCarthy wrote:
>>>
>>>> Should I update the docs to mention that as one that must be overridden?
>>>>
>>>> Jay
>>>>
>>>> 2011/4/5 Robby Findler <robby at eecs.northwestern.edu>:
>>>>> copy.
>>>>>
>>>>> Robby
>>>>>
>>>>> On Tue, Apr 5, 2011 at 1:34 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>>>>>> I'm trying to create a useful snip that displays a different sub-snip
>>>>>> every second. I think I've overridden every method required to get a
>>>>>> "useful" snip, but nothing gets display in DrRacket and the functions
>>>>>> aren't called ever. Are there other methods that need to be
>>>>>> overridden?
>>>>>>
>>>>>> The code is below...
>>>>>>
>>>>>> Jay
>>>>>>
>>>>>> #lang racket/base
>>>>>> (require (for-syntax racket/base)
>>>>>>         racket/class
>>>>>>         racket/function
>>>>>>         racket/runtime-path
>>>>>>         racket/snip)
>>>>>>
>>>>>> (define reactive-snip%
>>>>>>  (class* snip% ()
>>>>>>    (init-field sub-snips)
>>>>>>
>>>>>>    (printf "Snips: ~a\n" sub-snips)
>>>>>>
>>>>>>    (define (the-snip)
>>>>>>      (list-ref sub-snips
>>>>>>                (modulo (current-seconds) (length sub-snips))))
>>>>>>
>>>>>>    (define-syntax-rule (delegate id)
>>>>>>      (define/override (id . a)
>>>>>>        (define some-snip (the-snip))
>>>>>>        (printf "Delegating (~a ~a) to ~a\n"
>>>>>>                'id a
>>>>>>                some-snip)
>>>>>>        (send/apply some-snip id a)))
>>>>>>
>>>>>>    (delegate get-extent)
>>>>>>    (delegate draw)
>>>>>>    (delegate get-text)
>>>>>>    ; set-unmodified or modified
>>>>>>
>>>>>>    (super-new)))
>>>>>>
>>>>>> (define-runtime-path img1 '(lib "PLT-206-larval.png" "icons"))
>>>>>> (define-runtime-path img2 '(lib "PLT-206-mars.jpg" "icons"))
>>>>>>
>>>>>> (define sub-snips
>>>>>>      (map (curry make-object image-snip%)
>>>>>>           (list img1 img2)))
>>>>>>
>>>>>> (define x
>>>>>>  (make-object
>>>>>>      reactive-snip%
>>>>>>    sub-snips))
>>>>>>
>>>>>> sub-snips
>>>>>>
>>>>>> x
>>>>>>
>>>>>> --
>>>>>> Jay McCarthy <jay at cs.byu.edu>
>>>>>> Assistant Professor / Brigham Young University
>>>>>> http://faculty.cs.byu.edu/~jay
>>>>>>
>>>>>> "The glory of God is Intelligence" - D&C 93
>>>>>> _________________________________________________
>>>>>>  For list-related administrative tasks:
>>>>>>  http://lists.racket-lang.org/listinfo/users
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Jay McCarthy <jay at cs.byu.edu>
>>>> Assistant Professor / Brigham Young University
>>>> http://faculty.cs.byu.edu/~jay
>>>>
>>>> "The glory of God is Intelligence" - D&C 93
>>>>
>>>> _________________________________________________
>>>>  For list-related administrative tasks:
>>>>  http://lists.racket-lang.org/listinfo/users
>>>
>>>
>>
>
>
>
> --
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
>
> "The glory of God is Intelligence" - D&C 93
>



Posted on the users mailing list.