On 10/23/2012 05:19 PM, Danny Yoo wrote:
#lang typed/racket/base

;; We may have more information about the lambda's name.  This will show it.
(define-struct: LamPositionalName ([name : Symbol]
                                    [path : String]    ;; the source of the name
                                    [line : Natural]
                                    [column : Natural]
                                    [offset : Natural]
                                    [span : Natural]) #:transparent)


(: current-defined-name (Parameterof (U Symbol LamPositionalName)))
(define current-defined-name (make-parameter 'unknown))

To add, I can work around this behavior by doing:

(: UNKNOWN Symbol)
(define UNKNOWN 'unknown)

(: current-defined-name (Parameterof (U Symbol False LamPositionalName)))
(define current-defined-name (make-parameter UNKNOWN))

That looks to me like a problem with the inferencer. It's *something* with the inferencer, because you can work around it by annotating:

  (: current-defined-name (Parameterof (U Symbol LamPositionalName)))
  (define current-defined-name (make-parameter (ann 'unknown Symbol)))

I just don't know whether it's technically an error in TR.

Neil ⊥

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to