# Vector-add function not available

**URL:** <https://racket.discourse.group/t/vector-add-function-not-available/2722>\
**Category:** Questions & Answers\
**Created:** [February 15, 2024, 8:54am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722 "2024-02-15T08:54:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![rvdalen](https://avatars.discourse-cdn.com/v4/letter/r/b4bc9f/32.png) [@rvdalen](https://racket.discourse.group/u/rvdalen)\
**Post date:** [February 15, 2024, 8:54am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722/1 "2024-02-15T08:54:45Z")

</div>

I want to add a single element at the end of a vector, but I cannot find a function like vector-add. I am assuming that is because it acts as a deterrent not to try and do this.

Coming from a Clojure environment I am used to adding an element to the end of a vector and Clojure makes this efficient.

I can of course write a vector-add function using vector-append, but I want to know if there is a better solution before implementing my own vector-add.

I would prefer to keep using immutable data structures if possible.

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [February 15, 2024, 10:30am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722/2 "2024-02-15T10:30:37Z")

</div>

> I am assuming that is because it acts as a deterrent not to try and do this.

Yes.

> I would prefer to keep using immutable data structures if possible.

If you are comfortable using the development version, then you can use `treelist`:

[https://users.cs.utah.edu/plt/snapshots/current/doc/reference/treelist.html#(mod-path.\_racket%2Ftreelist)](https://users.cs.utah.edu/plt/snapshots/current/doc/reference/treelist.html#%28mod-path._racket%2Ftreelist%29)

Get it here: [Racket: Snapshot: 2024-02-14-fa06ed5f44](https://users.cs.utah.edu/plt/snapshots/)

If not, use a growable vector.

[https://docs.racket-lang.org/data/gvector.html](https://docs.racket-lang.org/data/gvector.html)

---

<div class="post-metadata">

**Author:** ![rvdalen](https://avatars.discourse-cdn.com/v4/letter/r/b4bc9f/32.png) [@rvdalen](https://racket.discourse.group/u/rvdalen)\
**Post date:** [February 15, 2024, 10:56am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722/3 "2024-02-15T10:56:20Z")

</div>

Awesome thanks for the quick reply.

I will have a look at the development version for treelist.  
I know about growable vectors, but they are mutable, which I would prefer to avoid.

Am I correct in my assumption that it looks like treelist will make into the next release of Racket?

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [February 15, 2024, 11:14am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722/4 "2024-02-15T11:14:06Z")

</div>

> Am I correct in my assumption that it looks like treelist will make into the next release of Racket?

Yes.

I think, `treelist` is just what you are looking for.

---

<div class="post-metadata">

**Author:** ![rvdalen](https://avatars.discourse-cdn.com/v4/letter/r/b4bc9f/32.png) [@rvdalen](https://racket.discourse.group/u/rvdalen)\
**Post date:** [February 15, 2024, 11:28am UTC](https://racket.discourse.group/t/vector-add-function-not-available/2722/5 "2024-02-15T11:28:49Z")

</div>

Treelist looks like the answer to me too 🙂
