As so often happens when one is forced to type out a question in real words, shortly after sending the previous email, I was able to answer my own question.
the result: (: make-random-emetype-list (Range -> (Listof EmeType))) (define (make-random-emetype-list range ) (letrec: ([lower : Integer (Range-lower range)] [upper : Integer (Range-upper range)] [how-many : Integer (random-integer lower upper)] [bld-lst : (Integer (Listof EmeType) -> (Listof EmeType)) (lambda: ([remaining : Integer] [lst : (Listof EmeType)]) (cond [(< remaining 1 ) lst] [else (bld-lst (- remaining 1) (cons (new-emetype) lst))]))]) (bld-lst how-many '()))) Thanks! On Sat, Feb 9, 2013 at 6:56 PM, Ben Dean <benjamin.d...@aya.yale.edu> wrote: > It would be very helpful to me to have an example of the "local" form for > defining an internal function in typed racket. I've read and re-read the > docs and can't seem to figure it out from the syntax definition. > > Here's what i've been trying: > > (: make-random-emetype-list (Range -> (Listof EmeType))) > (define (make-random-emetype-list range ) > (local ([define how-many-types (random-integer (Range-lower range) > (Range-upper range))] > [define: (bld-lst lst remaining) : ((Listof EmeType) Integer > -> (Listof EmeType)) > (cond [(< remaining 1) lst] > [else (bld-lst (cons (new-emetype) lst) (- remaining > 1))])]) > (bld-lst '() how-many-types))) > > but I get an error on this: "define:: expected the identifier `:' in: > ((Listof EmeType) Integer -> (Listof EmeType))" > > Thanks for the help! > > Ben >
____________________ Racket Users list: http://lists.racket-lang.org/users