diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-06-12 21:35:20 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-06-12 21:39:52 -0400 |
| commit | fb9b75b9f6014f81e8e944f8b105ec75d9ecdc0d (patch) | |
| tree | 0b2bc41ae55c4c70be293e34db2b1889f8e393bd /doc/shape.md | |
| parent | d030b119ca512e0b0f3b44554ac96ce3eeb2350e (diff) | |
Use Enclose documentation as an excuse to talk about unit arrays
Diffstat (limited to 'doc/shape.md')
| -rw-r--r-- | doc/shape.md | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/doc/shape.md b/doc/shape.md index 90a71cdd..1cb98d46 100644 --- a/doc/shape.md +++ b/doc/shape.md @@ -32,7 +32,7 @@ Applying Shape and the other two functions to an atom shows a shape of `⟨⟩`, ## Units -A unit is an atom, or an array with no axes—rank 0. Since it doesn't have any axes, its shape should have no elements. It should be the empty list `⟨⟩` (with a fill of `0`, like all shapes). As there's no first element in the shape, it's not obvious what the length should be, and a stricter language would just give an error. However, there are some good reasons to use a length of `1`. First, the total number of elements is 1, meaning that if the length divides this number evenly (as it does for non-unit arrays) then the only possible natural number it can be is 1. Second, many functions that take a list for a particular argument also accept a unit, and treat it as a length-1 array. For example, `5⥊a` and `⟨5⟩⥊a` are identical. Defining `≠5` to be `1` means that `=s⥊a` is always `≠s`. +A unit is an atom, or an array with no axes—rank 0. (See [Enclose](enclose.md) for more about unit arrays). Since it doesn't have any axes, its shape should have no elements. It should be the empty list `⟨⟩` (with a fill of `0`, like all shapes). As there's no first element in the shape, it's not obvious what the length should be, and a stricter language would just give an error. However, there are some good reasons to use a length of `1`. First, the total number of elements is 1, meaning that if the length divides this number evenly (as it does for non-unit arrays) then the only possible natural number it can be is 1. Second, many functions that take a list for a particular argument also accept a unit, and treat it as a length-1 array. For example, `5⥊a` and `⟨5⟩⥊a` are identical. Defining `≠5` to be `1` means that `=s⥊a` is always `≠s`. Despite this last point, it's important to remember that a unit isn't the same as a 1-element list. For example, the length-1 string `"a"` doesn't match `<'a'` but instead `⟨'a'⟩`. And also bear in mind that having an empty *shape* doesn't make a unit an empty *array*. That would mean it has no elements, not one! |
