# \#lang cli doesn't work or no longer is part of Racket

**URL:** https://racket.discourse.group/t/lang-cli-doesnt-work-or-no-longer-is-part-of-racket/2137
**Category:** Questions & Answers
**Created:** [July 22, 2023, 9:50pm UTC](https://racket.discourse.group/t/lang-cli-doesnt-work-or-no-longer-is-part-of-racket/2137 "2023-07-22T21:50:05Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![lewisl](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/lewisl/32/1321_2.png) [@lewisl](https://racket.discourse.group/u/lewisl)
#### Post date: [July 22, 2023, 9:50pm UTC](https://racket.discourse.group/t/lang-cli-doesnt-work-or-no-longer-is-part-of-racket/2137/1 "2023-07-22T21:50:05Z")

</div>

I followed an example in the doc:

```scheme
In order to use the language to write a command line script, simply declare the module as #lang cli at the top of the file.

#lang cli
 
(program (hello name)
  (displayln (string-append "Hello " name "!")))
 
(run hello)

```

This doesn't work at all. Here is my trivial version:

```scheme
#lang cli

(program (square n)
    (displayln (* ( ->number n) ( ->number n))))

(run square)

```

The error message contained an [install] button so I clicked it. About 4 minutes later, "cli" was installed. What is "cli": a DSL for command line programs? Surely, there is something built-in that doesn't bring in a pretty big dependency.

---

<div class="post-metadata">

### Author: ![lewisl](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/lewisl/32/1321_2.png) [@lewisl](https://racket.discourse.group/u/lewisl)
#### Post date: [July 22, 2023, 9:58pm UTC](https://racket.discourse.group/t/lang-cli-doesnt-work-or-no-longer-is-part-of-racket/2137/2 "2023-07-22T21:58:52Z")

</div>

I got it to work after creating the executable. I could do this with the command line support, this "language" incorporates and simplifies using the libraries.

But the executable is objectionably HUGE!

---

<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: [July 22, 2023, 11:19pm UTC](https://racket.discourse.group/t/lang-cli-doesnt-work-or-no-longer-is-part-of-racket/2137/3 "2023-07-22T23:19:56Z")

</div>

`#lang cli` is not a part of Racket, so that’s why you need to additionally install it. Yes, it appears to be a DSL for writing a command-line program.

Racket already has a standard library for command-line parsing. Take a look at [https://docs.racket-lang.org/reference/Command-Line\_Parsing.html](https://docs.racket-lang.org/reference/Command-Line_Parsing.html). Without using `#lang cli`, your program size may be reduced by a bit.
