# Coordinate \`generator?\` with \`eval\`?

**URL:** <https://racket.discourse.group/t/coordinate-generator-with-eval/1900>\
**Category:** Questions & Answers\
**Tags:** question\
**Created:** [April 30, 2023, 4:26pm UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900 "2023-04-30T16:26:59Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Antigen-11](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/antigen-11/32/1813_2.png) [@Antigen-11](https://racket.discourse.group/u/Antigen-11)\
**Post date:** [April 30, 2023, 4:26pm UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900/1 "2023-04-30T16:26:59Z")

</div>

I want to use `eval` to produce a generator and enforce `generator?` on the result of the evaluation.

But it seems that the result is just an ordinary procedure instead of a generator.

```scheme
Welcome to Racket v8.8.0.8 [cs].
> (define nm (make-base-namespace))
> (parameterize ((current-namespace nm))
    (namespace-require 'racket/generator))
> (require racket/generator)
> (generator? (eval #'(generator () (yield 1)) nm))
#f
> (eval #'(generator () (yield 1)) nm)
#<procedure:generator>

```

I have to ensure that it is a generator and `generator-state` is available. What can I do to fix it?

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [April 30, 2023, 4:46pm UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900/2 "2023-04-30T16:46:42Z")

</div>

This problem (and its solution) is detailed in [https://docs.racket-lang.org/guide/mk-namespace.html#%28part._.Sharing_.Data\_and\_.Code\_.Across\_.Namespaces%29](https://docs.racket-lang.org/guide/mk-namespace.html#%28part._.Sharing_.Data_and_.Code_.Across_.Namespaces%29)

---

<div class="post-metadata">

**Author:** ![EmEf](https://avatars.discourse-cdn.com/v4/letter/e/53a042/32.png) [@EmEf](https://racket.discourse.group/u/EmEf)\
**Post date:** [April 30, 2023, 4:49pm UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900/3 "2023-04-30T16:49:27Z")

</div>

```scheme
((eval #'generator? nm) (eval #'(generator () (yield 1)) nm))

```

---

<div class="post-metadata">

**Author:** ![Antigen-11](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/antigen-11/32/1813_2.png) [@Antigen-11](https://racket.discourse.group/u/Antigen-11)\
**Post date:** [May 1, 2023, 12:19am UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900/4 "2023-05-01T00:19:02Z")

</div>

Thanks. I'll go through the documentation.

---

<div class="post-metadata">

**Author:** ![Antigen-11](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/antigen-11/32/1813_2.png) [@Antigen-11](https://racket.discourse.group/u/Antigen-11)\
**Post date:** [May 1, 2023, 12:20am UTC](https://racket.discourse.group/t/coordinate-generator-with-eval/1900/5 "2023-05-01T00:20:45Z")

</div>

Thanks. But I suppose `namespace-attach-module` is a better choice.
