# Question on new Racket install graphic IDE

**URL:** <https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657>\
**Category:** Questions & Answers\
**Created:** [February 5, 2022, 4:17am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657 "2022-02-05T04:17:48Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![joekillian](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joekillian/32/382_2.png) [@joekillian](https://racket.discourse.group/u/joekillian)\
**Post date:** [February 5, 2022, 4:17am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/1 "2022-02-05T04:17:48Z")

</div>

Why in the code below getting "read-syntax: `#lang` not enabled"

In the graphic IDE I get:

"Welcome to DrRacket, version 8.3 [cs].  
Language: Advanced Student; memory limit: 128 MB.  
read-syntax: `#lang` not enabled  
possible reason: not allowed again inside a module that already starts `#lang`, or not enabled for interactive evaluation

> "

#lang racket/base  
(require racket/class)

(define fibber%  
(class object%  
(init-field n)  
(define/public (get-value)  
(cond  
[(= n 0) 0]  
[(= n 1) 1]  
[else (+ (send (new fibber% [n (- n 1)]) get-value)  
(send (new fibber% [n (- n 2)]) get-value))]))  
(super-new)))

(send (new fibber% [n 30]) get-value)

---

<div class="post-metadata">

**Author:** ![simonls](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/simonls/32/170_2.png) [@simonls](https://racket.discourse.group/u/simonls)\
**Post date:** [February 5, 2022, 5:04am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/2 "2022-02-05T05:04:09Z")

</div>

I believe your DrRacket is set to `Language: Advanced Student;` as shown by the text in the interactions window. You should be able to use the menu `Language > Choose Language...` to open a dialog and in that dialog you can select `The Racket Language`.

When certain languages are selected via this menu the `#lang` line may not be supported/active for that language. (Although I think quite a lot of student languages can be used via a `#lang` line as well, from what I have read, it seems that in the past that wasn't always possible for every language, which is why there is an explicit language switcher instead of every language using the `#lang` line.)  
My knowledge about student languages is very limited, so others may have more to say about that.

---

<div class="post-metadata">

**Author:** ![joekillian](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joekillian/32/382_2.png) [@joekillian](https://racket.discourse.group/u/joekillian)\
**Post date:** [February 5, 2022, 5:08am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/3 "2022-02-05T05:08:38Z")

</div>

Using Beginning Student Language shows:

Welcome to DrRacket, version 8.3 [cs].  
Language: Beginning Student; memory limit: 128 MB.  
**read-syntax: `#lang` not enabled**  
\*\* possible reason: not allowed again inside a module that already starts `#lang`, or not enabled for interactive evaluation\*\*  
**\>**

---

<div class="post-metadata">

**Author:** ![simonls](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/simonls/32/170_2.png) [@simonls](https://racket.discourse.group/u/simonls)\
**Post date:** [February 5, 2022, 5:21am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/4 "2022-02-05T05:21:44Z")

</div>

I am unsure what you are trying to do. What is your goal?  
If you want to get started learning racket using the student languages, you can take a look at [How to Design Programs](https://htdp.org/) which uses these student languages and programs written in them to get you started with learning the language.

The student languages are smaller languages used for teaching that are able to provide better error messages for the student.  
But you can't use those languages to run a `#lang racket/base` racket program.  
`#lang racket/base` is for when you already have learned racket, it is the more complex real world general racket language, it is only recommended to use that when you already know how to use it, or maybe in combination with other tutorials.

---

<div class="post-metadata">

**Author:** ![simonls](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/simonls/32/170_2.png) [@simonls](https://racket.discourse.group/u/simonls)\
**Post date:** [February 5, 2022, 5:31am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/5 "2022-02-05T05:31:52Z")

</div>

If you just want to run your program you have to use `The Racket Language (ctl-R)` and press the OK button.

![LanguageChooserDialog](https://global.discourse-cdn.com/free1/uploads/racket/original/1X/3918c0b6c6389a044561b5cc11a84ed72ed0113f.png)

---

<div class="post-metadata">

**Author:** ![joekillian](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joekillian/32/382_2.png) [@joekillian](https://racket.discourse.group/u/joekillian)\
**Post date:** [February 5, 2022, 6:06am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/6 "2022-02-05T06:06:43Z")

</div>

#lang racket/base entered in the IDE with this error which means I can't use any #urlang. Why does this IDE won't use "#lang" to change a different dialect? I am sure there is some easy problem. None of the #lang dialects don't work with beginning and advanced.

Welcome to DrRacket, version 8.3 [cs].  
Language: Beginning Student; memory limit: 128 MB.  
read-syntax: `#lang` not enabled  
possible reason: not allowed again inside a module that already starts `#lang`, or not enabled for interactive evaluation

>

---

<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:** [February 5, 2022, 6:23am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/7 "2022-02-05T06:23:10Z")

</div>

Did you read Simon's replies? He already gave you a solution.

---

<div class="post-metadata">

**Author:** ![sschwarzer](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/sschwarzer/32/1940_2.png) [@sschwarzer](https://racket.discourse.group/u/sschwarzer)\
**Post date:** [February 5, 2022, 11:11am UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/8 "2022-02-05T11:11:33Z")

</div>

Yes, I think that joekillian should be able to solve their problem with the help of simonls's answers.

On the other hand, I can totally understand how it can be confusing to have these two language "levels" in the DrRacket GUI vs. as `#lang` line. I think it isn't far-fetched to assume that using `#lang` would be enough to choose a language (even though it obviously _isn't_ enough).

Why do we have these two levels? Why are they necessary? _Are_ they actually necessary or could DrRacket be changed to switch to "normal" Racket if `#lang racket` is used? But maybe that had already been considered and the current behavior been kept for a reason? If yes, which reason(s)?

(@all) Sorry for the many questions. Just answer what you want to answer and ignore the rest. 🙂

---

<div class="post-metadata">

**Author:** ![simonls](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/simonls/32/170_2.png) [@simonls](https://racket.discourse.group/u/simonls)\
**Post date:** [February 5, 2022, 12:24pm UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/9 "2022-02-05T12:24:41Z")

</div>

I think the simple technical answer might be, every lang can be implemented with its own parser, many of which may not want to support the `#lang`. But that answer is a bit too simple, because the `#lang` line is quite easy to parse so drracket could detect that relatively easy.

I suspect those two different ways of selecting language is more a historical artifact, because some drracket functionality didn't work via `#lang` line (I remember reading relatively recent mailing list posts about some feature that was made to work that didn't work before, if I remember correctly it was something about language specific tool-buttons).  
Apart from that I don't know whether there is still a strong argument for having more than the `#lang` line.

Personally I am not bothered by it either way, but maybe it could make sense to add a `#lang line` detection feature to drracket? The idea would be if some non-`#lang` language is selected and a `#lang` line is detected, some sort of note could popup asking you if you want to switch modes.  
But implementing something like this would only make sense if this is a common problem and maybe there are other better solutions.

I also am curious about your other questions, overall I think it is mostly a matter of finding a good way to improve it and doing the work of improving it.  
DrRacket seems to be used by a lot of different small groups so having that language switcher probably made it easier for those groups to switch to their way of using it. An improvement needs to keep all those different use cases in mind. I know that they exist but not what the particular details are.

---

<div class="post-metadata">

**Author:** ![joekillian](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/joekillian/32/382_2.png) [@joekillian](https://racket.discourse.group/u/joekillian)\
**Post date:** [February 5, 2022, 6:12pm UTC](https://racket.discourse.group/t/question-on-new-racket-install-graphic-ide/657/10 "2022-02-05T18:12:04Z")

</div>

I am newly Racket minted (great IDE)... I used APL decades ago and now J prototyping. Both old and new great IDE's and don't have selectable dialects (sets of libraries) - but they could. Shortly focusing on Jesse Alama's "Server: Racket—Practical Web Development with the Racket HTTP Server" book then trying out Picolisp. Then pulling out some APL snippets - [https://aplcart.info/](https://aplcart.info/) - and recode into Racket and Picolisp.
