# Is "Data" a reserved keyword in Julia?

**URL:** <https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804>\
**Category:** General Usage\
**Created:** [May 9, 2018, 6:40pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804 "2018-05-09T18:40:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yunde](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yunde/32/8874_2.png) [@Yunde](https://discourse.julialang.org/u/Yunde)\
**Post date:** [May 9, 2018, 6:40pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/1 "2018-05-09T18:40:05Z")

</div>

I traced a problem of my project down to the keyword “Data”. I did not see any declaration in the documents that “Data” is reserved. Here is an example:

```
# it works for "Data2" 
abstract type Data2 end;
typeof(Data2) 

# but it does not work for "Data
abstract type Data end;
typeof(Data) 

```

Julia Version 0.6.2  
Commit d386e40c17 (2017-12-13 18:08 UTC)

Error message is here:

```
MethodError: no method matching include_string(::Type{Data}, ::String, ::String, ::Int64)e[0m
Closest candidates are:
include_string(e[91m::Modulee[39m, ::Any...) at /Applications/JuliaPro-0.6.2.2.app/Contents/Resources/pkgs-0.6.2.2/v0.6/CodeTools/src/eval.jl:34
include_string(e[91m::Modulee[39m, ::String, ::String) at /Applications/JuliaPro-0.6.2.2.app/Contents/Resources/pkgs-0.6.2.2/v0.6/Compat/src/Compat.jl:71
include_string(e[91m::Modulee[39m, ::AbstractString, ::AbstractString) at /Applications/JuliaPro-0.6.2.2.app/Contents/Resources/pkgs-0.6.2.2/v0.6/Compat/src/Compat.jl:73
...

```

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [May 9, 2018, 6:43pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/2 "2018-05-09T18:43:48Z")

</div>

No, `Data` is not a reserved or special word. Your minimal example works for me. There’s something else going on here.

---

<div class="post-metadata">

**Author:** ![Yunde](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yunde/32/8874_2.png) [@Yunde](https://discourse.julialang.org/u/Yunde)\
**Post date:** [May 9, 2018, 7:12pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/3 "2018-05-09T19:12:33Z")

</div>

Thank you. You are right. It works in my Julia REPL, but not in JuliaPro. It might be caused by the JuliaPro. I should have tried it out in REPL first before positing. Thanks.

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [May 10, 2018, 6:23pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/4 "2018-05-10T18:23:48Z")

</div>

It might be nice to setup a website at some point where people can post name collisions like this. I see a reserved word post once every couple months.

Rails has a pretty nice one here:

- [https://reservedwords.herokuapp.com/](https://reservedwords.herokuapp.com/)

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [May 10, 2018, 6:37pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/5 "2018-05-10T18:37:31Z")

</div>

It’s likely that you are seeing a conflict with [DataStreams.jl](https://github.com/JuliaData/DataStreams.jl) which exports a module called `Data`.

Maybe this wasn’t the best move, as admittedly `Data` does seem like too general a name to use for much of anything, except possibly sentient androids, but it’s a core part of the Julia data ecosystem so I think that name is here to stay.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [May 10, 2018, 8:46pm UTC](https://discourse.julialang.org/t/is-data-a-reserved-keyword-in-julia/10804/6 "2018-05-10T20:46:58Z")

</div>

Even still, the posted error is confusing — if that were the case it should show a

```julia
ERROR: cannot assign variable Data from module Main

```

or some such when trying to create the type.
