[racket] language-info in #lang typed/racket files vs. (module _ typed/racket ...) files

From: Daniel Feltey (dfeltey at ccs.neu.edu)
Date: Mon Nov 24 15:59:14 EST 2014

I'm trying to use `module->language-info` to determine if a module I am requiring is written in typed/racket or racket, since if the module is implemented in racket `module->language-info` will return #f, but a vector if the module was typed. 

The problem I'm running into is that with files of the form:

;; foo.rkt
(module foo typed/racket

(module->language-info "foo.rkt" #t) returns #f even though I expect a language-info that tells me the file is written in typed/racket.

Changing foo.rkt to the following:

;; foo.rkt
#lang typed/racket

Then gives a non-false language-info vector when calling (module->language-info "foo.rkt" #t).

Is this the expected behavior? I thought that the #lang version of the file should be equivalent to the (module ...) version.

This seems to be addressed somewhat in http://docs.racket-lang.org/guide/module-runtime-config.html but it doesn't explain why (module ...) doesn't get language-info.


Posted on the users mailing list.