# Boolean Array in Julia

**URL:** <https://discourse.julialang.org/t/boolean-array-in-julia/14418>\
**Category:** New to Julia\
**Created:** [September 2, 2018, 12:55am UTC](https://discourse.julialang.org/t/boolean-array-in-julia/14418 "2018-09-02T00:55:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nakul\_Tiruviluamala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nakul_tiruviluamala/32/11228_2.png) [@Nakul\_Tiruviluamala](https://discourse.julialang.org/u/Nakul_Tiruviluamala)\
**Post date:** [September 2, 2018, 12:55am UTC](https://discourse.julialang.org/t/boolean-array-in-julia/14418/1 "2018-09-02T00:55:45Z")

</div>

Hi guys,  
I’m trying to translate this code into Julia. I was wondering the best way to do this:

```julia
BOOLEAN ARRAY PerfectConsonance[0:12];
SIMPLE PROCEDURE PerfInit;
  BEGIN
  PerfectConsonance[Unison]:=TRUE;
  PerfectConsonance[Fifth]:=TRUE;
  PerfectConsonance[Octave]:=TRUE;
  END; REQUIRE PerfInit INITIALIZATION;

```

Thanks,  
Nakul

---

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [September 2, 2018, 2:43am UTC](https://discourse.julialang.org/t/boolean-array-in-julia/14418/2 "2018-09-02T02:43:21Z")

</div>

It will be easier to help you if you can explain what your code is trying to do (and what language it’s written in). It looks like it might be SAIL, a dialect of ALGOL (according to some frantic googling)?

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [September 2, 2018, 3:49am UTC](https://discourse.julialang.org/t/boolean-array-in-julia/14418/3 "2018-09-02T03:49:20Z")

</div>

Your area of work is not an expertise of mine. Nonetheless…

```julia
module Consonance

export PerfectConsonance,
      Unison, MinorSecond, MajorSecond,
      Fifth, Octave

#=
 Julia uses 1-based indexing, so the first
 index into a vector is `1` and the last
 index in a vector of length 13 is `13`.
 To use named musical intervals' semitone
 counts as indices, add 1 to each count.
=#

const Unison = 0 + 1
const MinorSecond = 1 + 1
const MajorSecond = 2 + 1
# ...
const Fifth = 7 + 1
const Octave = 12 + 1

#=
  const Vec = [..values..] 
  means the assignment of the name Vec does not
  change. The specific values Vec contains are
  alterable and we use this to set up a vector
  of 13 Boolean values, preinitialized false,
  and then initialized for use elsewhere.
=#

const PerfectConsonance = falses(13)

#=
  now assign `true` to each that is perfect
  `=` is used when assigning one thing to another
  `.=` is used when assigning one thing to others
=# 
PerfectConsonance[[Unison, Fifth, Octave]] .= true

end # module Consonance

#=
  `using ModuleName` works with externally stored packages
  `using .ModuleName` works with modules written interactively
      and also is used when one module contains another.
=#

using .Consonance

PerfectConsonance[Fifth]
# true

PerfectConsonance[MinorSecond]
# false
```

---

<div class="post-metadata">

**Author:** ![Nakul\_Tiruviluamala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nakul_tiruviluamala/32/11228_2.png) [@Nakul\_Tiruviluamala](https://discourse.julialang.org/u/Nakul_Tiruviluamala)\
**Post date:** [September 2, 2018, 4:05am UTC](https://discourse.julialang.org/t/boolean-array-in-julia/14418/4 "2018-09-02T04:05:56Z")

</div>

Thank you very much for the explanation. const in conjunction with the preinitialized falses/trues is a very interesting concept.

It is code for counterpoint music generation. I just discovered that the SAIL code was also ported to C in the same GitHub. [metasolfeggio/classics at master · namin/metasolfeggio · GitHub](https://github.com/namin/metasolfeggio/tree/master/classics)

The equivalent Boolean interpretation in C is yet another way to do it.

```julia
int PerfectConsonance[13] = {1,0,0,0,0,0,0,1,0,0,0,0,1};
int ImperfectConsonance[13] = {0,0,0,1,1,0,0,0,1,1,0,0,0};
int Dissonance[13] = {0,1,1,0,0,1,1,0,0,0,1,1,0};

```
