Here is my experiment: green.rkt: (module green eopl (provide numfuncts) (provide dummy) (define numfuncts -1) (define dummy 10))
File1.rkt: #lang eopl (require racket/vector) (require "green.rkt") (define numfs numfuncts) (define (crazy x) (* dummy x)) (define (f x) (build-vector 10 (lambda (i) (* i x)))) Throws the following error: expand: unbound identifier in module in: build-vector File2.rkt: #lang eopl (require racket/base) (require "green.rkt") (define numfs numfuncts) (define (crazy x) (* dummy x)) (define (f x) (build-vector 10 (lambda (i) (* i x)))) Throws the following error: #%module-begin: bad syntax in: (#%module-begin (#%require racket/base) (#%require "green.rkt") (define-values (numfs) numfuncts) (define-values (crazy) (lambda (x) (#%app * dummy x))) (define-values (f) (lambda (x) (#%app build-vector (quote 10) (lambda (i) (#%app * i x)))))) On Tue, Oct 18, 2011 at 11:06 AM, Robby Findler <ro...@eecs.northwestern.edu> wrote: > [adding back the list again]. > > I'm not sure what is going on exactly, but it looks like it might be a > bad interaction between racket/base and eopl. Here's a smaller pair of > files that illustrates the problem: > > green.rkt: > (module green eopl) > > Another file (any file): > > #lang eopl > (require racket/base) > (require "green.rkt") > > Running the latter file produces the problem. > > While we wait for someone to fix/address the issue, Marco, I think > that you can probably avoid the problem by not requiring racket/base. > Or, if you do need something from there, using an only-in or requiring > some other, smaller library should let you work around the problem. > > hth, > Robby > > On Tue, Oct 18, 2011 at 9:53 AM, Marco Morazan <moraz...@gmail.com> wrote: >> I've tried to reduce the rather large files I've been given. >> >> green.rkt: >> (module green eopl >> (provide dummy) >> (provide numfuncts) >> (provide get-dummy) >> (provide mutate-dummy!) >> >> (define dummy 10) >> (define (get-dummy) dummy) >> (define numfuncts -1) >> (define (mutate-dummy! x) (set! dummy x)) ) >> >> test-require.rkt: >> #lang eopl >> (require scheme/base) >> (require "green.rkt") >> >> (define numfs numfuncts) >> (define (crazy x) (* dummy x)) >> >> test-require produces the following error: >> >> #%module-begin: bad syntax in: (#%module-begin (#%require >> scheme/base) (#%require "green.rkt") (define-values (numfs) numfuncts) >> (define-values (crazy) (lambda (x) (#%app * dummy x)))) >> >> If I comment out the first require everything works fine as long as >> functions in racket/base are not used. That is: >> >> test-require.rkt: >> #lang eopl >> (require scheme/base) >> (require "green.rkt") >> >> (define numfs numfuncts) >> (define (crazy x) (* dummy x)) >> (define (f x) (build-vector 10 (lambda (i) (* i x)))) >> >> Throws the following error: >> >> #%module-begin: bad syntax in: (#%module-begin (#%require scheme/base) >> (#%require "green.rkt") (define-values (numfs) numfuncts) >> (define-values (crazy) (lambda (x) (#%app * dummy x))) (define-values >> (f) (lambda (x) (#%app build-vector (quote 10) (lambda (i) (#%app * i >> x)))))) >> >> Version info: >> >> Welcome to DrRacket, version 5.1.3 [3m]. >> Language: eopl; memory limit: 128 MB. >> >> >> >> On Tue, Oct 18, 2011 at 10:41 AM, Robby Findler >> <ro...@eecs.northwestern.edu> wrote: >>> This sounds like a bug in #lang eopl (at least in the error message >>> reporting), but this program is still not enough to actually reproduce >>> the problem. For me, for example, this works fine: >>> >>> #lang eopl >>> (require racket/base) >>> (require racket/list) >>> >>> So it isn't just having two requires. >>> >>> Robby >>> >>> On Tue, Oct 18, 2011 at 9:37 AM, Marco Morazan <moraz...@gmail.com> wrote: >>>> I see where there are some problems. >>>> >>>> First, I see they are attempting to mutate variables defined in a >>>> required module. This, I believe, can be fixed by exporting mutating >>>> functions from the required module. >>>> >>>> Second, they want to have multiple require statements like: >>>> >>>> #lang eopl >>>> (require racket/base) >>>> (require "green.rkt") >>>> >>>> <code> >>>> >>>> The above produces the following error: >>>> >>>> #%module-begin: bad syntax in: (#%module-begin (#%require >>>> racket/base) (#%require "green.rkt") ... >>>> >>>> Commenting out the first require statement causes an expected error on >>>> a function in racket/base: >>>> >>>> expand: unbound identifier in module in: build-vector >>>> >>>> Is this enough context to point me in the right direction? >>>> >>>> >>>> >>>> On Tue, Oct 18, 2011 at 9:23 AM, Robby Findler >>>> <ro...@eecs.northwestern.edu> wrote: >>>>> I think we'll probably need some more context to say what is going on. >>>>> Can you post a complete program that has that symptom? >>>>> >>>>> Robby >>>>> >>>>> On Tue, Oct 18, 2011 at 8:16 AM, Marco Morazan <moraz...@gmail.com> wrote: >>>>>> I'm at a loss with this error. Can anyone provide some insight? >>>>>> >>>>>> So, I have the following (in a file named green.rkt): >>>>>> (module green ... >>>>>> (provide expr) >>>>>> (provide program) >>>>>> ... >>>>>> ;(provide num-functs) >>>>>> >>>>>> <a bunch of definitions including definitions for expr, program, >>>>>> num-functs, and everything in the ...> ) >>>>>> >>>>>> In a different file I have: >>>>>> >>>>>> (require "green.rkt") >>>>>> >>>>>> If as above, I comment out (provide num-functs) I get the following >>>>>> error: >>>>>> >>>>>> expand: unbound identifier in module in: num-functs >>>>>> >>>>>> This makes sense since I have not provided num-functs. >>>>>> >>>>>> If I uncomment it I get the following error: >>>>>> >>>>>> #%module-begin: bad syntax in: (#%module-begin (#%require >>>>>> scheme/base) (#%require "green.rkt") (define-syntaxes (prog) >>>>>> (let-values (((cert) (#%app syntax-local-certifier (quote #t)))) .... >>>>>> >>>>>> There is no problem reported with any other of my provide statements >>>>>> which resolved all other of my errors of type 1 above (i.e., expand). >>>>>> >>>>>> Any suggestions? >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Marco >>>>>> _________________________________________________ >>>>>> For list-related administrative tasks: >>>>>> http://lists.racket-lang.org/listinfo/users >>>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> Cheers, >>>> >>>> Marco >>>> >>> >> >> >> >> -- >> >> Cheers, >> >> Marco >> > -- Cheers, Marco _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users