Marcel van Lohuizen | 3e592b4 | 2019-01-11 20:31:29 +0100 | [diff] [blame] | 1 | [TOC](Readme.md) [Prev](rangedef.md) [Next](templates.md) |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 2 | |
Marcel van Lohuizen | 3e592b4 | 2019-01-11 20:31:29 +0100 | [diff] [blame] | 3 | _Types ~~and~~ are Values_ |
Marcel van Lohuizen | af0932f | 2019-01-11 13:03:56 +0100 | [diff] [blame] | 4 | |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 5 | # Lists |
| 6 | |
| 7 | Lists define arbitrary sequences of CUE values. |
| 8 | A list can be closed or open ended. |
Marcel van Lohuizen | 3eb3a3c | 2019-01-11 12:39:52 +0100 | [diff] [blame] | 9 | Open-ended lists may have some predefined elements, but may have |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 10 | additional, possibly typed elements. |
| 11 | |
| 12 | In the example we define `IP` to be a list of `4` elements of type `uint8`, which |
Marcel van Lohuizen | 62b8727 | 2019-02-01 10:07:49 +0100 | [diff] [blame] | 13 | is a predeclared value of `>=0 & <=255`. |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 14 | `PrivateIP` defines the IP ranges defined for private use. |
| 15 | Note that as it is already defined to be an `IP`, the length of the list |
Marcel van Lohuizen | 3eb3a3c | 2019-01-11 12:39:52 +0100 | [diff] [blame] | 16 | is already fixed at `4` and we do not have to specify a value for all elements. |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 17 | Also note that instead of writing `...uint8`, we could have written `...` |
| 18 | as the type constraint is already already implied by `IP`. |
| 19 | |
Marcel van Lohuizen | 3eb3a3c | 2019-01-11 12:39:52 +0100 | [diff] [blame] | 20 | The output contains a valid private IP address (`myIP`) |
| 21 | and an invalid one (`yourIP`). |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 22 | |
| 23 | <!-- CUE editor --> |
| 24 | ``` |
| 25 | IP: 4 * [ uint8 ] |
| 26 | |
| 27 | PrivateIP: IP |
Marcel van Lohuizen | 62b8727 | 2019-02-01 10:07:49 +0100 | [diff] [blame] | 28 | PrivateIP: [10, ...uint8] | [192, 168, ...] | [172, >=16 & <=32, ...] |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 29 | |
| 30 | myIP: PrivateIP |
| 31 | myIP: [10, 2, 3, 4] |
| 32 | |
| 33 | yourIP: PrivateIP |
| 34 | yourIP: [11, 1, 2, 3] |
| 35 | ``` |
| 36 | |
| 37 | <!-- result --> |
| 38 | ``` |
Marcel van Lohuizen | 62b8727 | 2019-02-01 10:07:49 +0100 | [diff] [blame] | 39 | IP: [>=0 & <=255, >=0 & <=255, >=0 & <=255, >=0 & <=255] |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 40 | PrivateIP: |
Marcel van Lohuizen | 62b8727 | 2019-02-01 10:07:49 +0100 | [diff] [blame] | 41 | [10, >=0 & <=255, >=0 & <=255, >=0 & <=255] | |
| 42 | [192, 168, >=0 & <=255, >=0 & <=255] | |
| 43 | [172, >=16 & <=32, >=0 & <=255, >=0 & <=255] |
Marcel van Lohuizen | 75cb003 | 2019-01-11 12:10:48 +0100 | [diff] [blame] | 44 | |
| 45 | myIP: [10, 2, 3, 4] |
| 46 | yourIP: _|_ |
| 47 | ``` |