5. Constant definition¶
5.1. Constant (immutable) variable¶
Constant variable can be defined following:
1 2 3 4 5 6 7 | (* File: val_pi.dats *)
#include "share/atspre_staload.hats"
implement main0 () =
let val pi = 3.1415 in
println! (pi * 2)
end
|
$ patscc val_pi.dats
$ ./a.out
6.283000
Also we can define it using {}.
1 2 3 4 5 6 7 | (* File: val_pi2.dats *)
#include "share/atspre_staload.hats"
implement main0 () = {
val pi = 3.1415
val () = println! (pi * 2)
}
|
The constant variables should not be changed, but able to be overwrited.
1 2 3 4 5 6 7 8 9 10 11 12 | (* File: val_overwrite.dats *)
#include "share/atspre_staload.hats"
implement main0 () = {
val a = 1
val b = a
val () = println! a
val () = println! b
val a = 2
val () = println! a
val () = println! b
}
|
First, this program creates a binding between a and 1. Secondly, it creates another binding between b and old a. Finally, it creates new binding between new a and 2.
At line number 7 of val_overwrite.dats, println! shows a value of old a. On the one hand, at line number 10, it shows a value of new a.
$ patscc val_overwrite.dats
$ ./a.out
1
1
2
1
The name binding of code val_overwrite.dats is represented as following figure:
Note
Exercise: Define following constant variables on ATS language, and print it on console.
- The name is e and the value is \(2\).
- The name is positive and the value is \(e > 0\).
- The name is seconds_of_day and the value is \(60 * 60 * 24\).
- The name is name and the value is a char string "John".
5.2. (Mutable) variable¶
Mutable variable is ready on ATS language, however it’s rarely used on ATS programming.