[racket] Fw: Splitting Racket source code by scope?
> You wrote:
> -------------------------------------------------------------------------------
> As Matthias mentions, you can formally link together "units" together.
> Units are Racket's dependency-injection component framework. You can
> read documentation about them here:
>
> http://docs.racket-lang.org/guide/units.html
>
> --------------------------------------------------------------------------------
> Thanks for the pointer, but unfortunately, the docs as they are don't seem
> to provide a meaningful starting point for experimenting with the code, or
> I may be too daft to make sense of it (probably the latter). Here's what I
> did:
>
> 1. Copy-and-paste the four code fragments verbatim into four files named
> (as the docs suggested) toy-factory-sig.rkt, simple-factory-unit.rkt,
> toy-store-sig.rkt and toy-store-unit.rkt, respectively
>
> 2. Changed all require references to (require (file
> "f://testpath//toy-store-sig.rkt")) etc because I couldn't find any other
> way for wither DrRacket or Racket to accept the paths
>
> 3. (as the docs suggested) typed (require (file
> "f://testpath//simple-factory-unit.rkt")) in DrRacket
>
> DrRacket now responded with
>
> ..\..\install\racket\collects\syntax\modcode.rkt:46:8: load-handler:
> expected a `module' declaration for `simple-factory-unit' in
> #<path:f:\testpath\simple-factory-unit.rkt>, but found something else
>
> looking through some older discussions, I discovered that the module
> headers seem to be mandatory to be able to work with units, but they are
> implicitly added when the language is set to racket/unit. I tried that on
> the top level in DrRacket but would get the same error. I then tried
> adding #lang racket/unit to all files but got this error:
>
> f:\testpath\simple-factory-unit.rkt:1:0: #%module-begin: missing an
> `import' clause in: (#%module-begin (require (file
> "f://testpath//toy-factory-sig.rkt")) (define-unit simple-factory@
> (import) (export toy-factory^) (printf "Factory started.\n")
> (define-struct toy (color) #:transparent) (define (build-toys n) (for/list
> ((i (in-range n))) (make-toy (quote blue)))) (define (repaint t col)
> (make-toy col))) (provide simple-factory@))
>
> I would REALLY like to understand the concepts, but in order to do that, I
> need to have working code that I can play around with. Could anybody
> please provide a working instruction to get the code samples from the
> documentation to run so I have a starting point? That means either provide
> explicit module wrappers for the files or describe a way to set the
> language such that the code runs as is?
>
> Thanks again to this really great and dedicated community!
>