shithub: limbobyexample

Download patch

ref: 87845d69835cc74cb4c7b7d16869b1e5ee481908
parent: 59602089585c48b2e319081e423c4382c2ef9bbb
author: henesy <henesy.dev@gmail.com>
date: Mon Feb 25 12:42:16 EST 2019

add constants example

--- /dev/null
+++ b/Constants/README.md
@@ -1,0 +1,38 @@
+# Constants
+
+Limbo does not have enum types, but does have the `con` keyword to indicate a constant value. 
+
+## Source
+
+### const.b:13,14
+
+	n: con 7;
+	Red, Green, Blue: con iota;
+
+The variable `n` is an integer constant with a value of 7. 
+
+The variables `Red`, `Green`, and `Blue` are integer constants with values 0, 1, and 2, respectively. 
+
+By default, the `iota` operator initializes variables on the left side with sequential values from 0 to n. Where n is the number of variables. The `iota` operator is only valid in expressions involving `con`. 
+
+Note: these variables are bound within the scope of this module's file. 
+
+### const.b:19
+
+	s: con "Limbo";
+
+The variable `s` is a string constant which is bound within the scope of the `init()` function. 
+
+## Demo
+
+	; limbo const.b
+	; const
+	7
+	Red: 0 Green: 1 Blue: 2
+	Limbo
+	; 
+
+## Exercises
+
+- Try to declare constants of other types, does `con` allow you to do this?
+- Change the `iota` statement such that the values of Red, Green, Blue are not increments of 1 and do not start at 0.
--- /dev/null
+++ b/Constants/const.b
@@ -1,0 +1,26 @@
+implement Const;
+
+include "sys.m";
+include "draw.m";
+
+sys: Sys;
+print: import sys;
+
+Const: module {
+	init: fn(nil: ref Draw->Context, nil: list of string);
+};
+
+n: con 7;
+Red, Green, Blue: con iota;
+
+init(nil: ref Draw->Context, nil: list of string) {
+	sys = load Sys Sys->PATH;
+
+	s: con "Limbo";
+
+	print(string n + "\n");
+	print("Red: %d Green: %d Blue: %d\n", Red, Green, Blue);
+	print(s + "\n");
+
+	exit;
+}
--- a/README.md
+++ b/README.md
@@ -23,6 +23,7 @@
 ## Index
 
 [Hello World](./HelloWorld)
+[Values](./Values)
 
 ## References