Note
The contents of this page are informational.
A. Glossary¶
A.1. attribute¶
A.1:1 An attribute is a general, free-form metadatum that is interpreted based on its name, convention, language, and tool.
A.2. algebraic data type¶
A.2:1 An algebraic data type is a collection of other types.
A.3. access expression¶
A.3:1 An access expression is an expression which specifies accessing either a item within a namespace, or a field of a value.
A.3:2 The alignment of a value specifies which addresses are valid for storing the value.
A.4. argument operand¶
A.4:1 An argument operand is an operand which is used as an argument in a call expression
A.5. binary literal¶
A.5:1 A binary literal is a integer literal that is in base 2.
A.41:1
See BinaryLiteral
.
A.6. block comment¶
A.6:1 A block comment is a comment that spans one or more lines.
A.7. bool¶
A.7:1
bool
is a type whose values denote the truth values of logic and
Boolean algebra.
A.8. boolean literal¶
A.8:1 A boolean literal is a literal that denotes the truth values of logic and Boolean algebra.
A.8:2
See BooleanLiteral
.
A.9. built-in attribute¶
A.9:1 A built-in attribute is a language-defined attribute.
A.10. byte literal¶
A.10:1 A byte literal is a literal that denotes a fixed byte value.
A.11. call expression¶
A.11:1 A call expression is an expression that invokes a function or constructs a struct value or enum variant value.
A.12. char¶
A.12:1
char
is a type whose values denote a single Unicode character.
A.13. character literal¶
A.13:1 A character literal is a literal that denotes a fixed Unicode character.
A.13:2
See CharacterContent
.
A.14. comment¶
A.14:1 A comment is a lexical element that acts as an annotation to the program source, and is ignored by the compiler.
A.14:2
See Comment
.
A.15. construct¶
A.15:1 A construct is a piece of program text that is an instance of a syntactic category.
A.16. decimal literal¶
A.16:1 A decimal literal is a integer literal that is in base 10.
A.17. discriminant¶
A.17:1 A discriminant is an opaque integer that identifies an enum variant.
A.18. discriminant initialiser¶
A.18:1
A discriminant initialiser shall be specified via the discriminant
attribute.
A.19. entity¶
A.19:1 An entity is a construct that can be referred to within the program text, usually via a access expression.
A.20. escaped character¶
A.20:1
An escaped character is the textual representation for a character with
special meaning. An escaped character consists of character 0x5C (\
) followed by
the single character encoding of the special meaning character. For example,
\n
is the escaped character for the newline character.
A.21. enum type¶
A.21:1 A enum type is an abstract data type that contains enum variants.
A.22. enum variant¶
A.22:1 An enum variant is a construct that declares one of the possible variations of an enum.
A.23. expression¶
A.23:1 An expression is a construct that produces a value, and may have side effects at run-time.
A.24. exported function¶
A.24:1 An exported function is an export of a function.
A.25. f32¶
A.25:1
f32
is a floating point type equivalent to the IEEE 754-2008 binary32 type.
A.26. f64¶
A.26:1
f64
is a floating point type equivalent to the IEEE 754-2008 binary64 type.
A.27. field¶
A.27:1 A field is an element of an algebraic data type.
A.28. float literal¶
A.28:1 A float literal is a numeric literal that denotes a fractional number.
A.29. float suffix¶
A.29:1 A float suffix is a component of a float literal that specifies the explicit floating point type.
A.30. floating point type¶
A.30:1 A floating point type is a numeric type that can represent values denote fractional numbers.
A.31. function¶
A.31:1 A function is a value of a function type that models a behaviour.
A.32. function type¶
A.32:1 A function type is a unique type that identifies a function.
A.33. hexadecimal literal¶
A.33:1 A hexadecimal literal is a integer literal that is in base 16.
A.34. i8¶
A.34:1
i8
is a signed integer type whose values range from - (27) to 27 - 1, all inclusive.
A.35. i16¶
A.35:1
i16
is a signed integer type whose values range from - (215) to 215 - 1, all inclusive.
A.36. i32¶
A.36:1
i32
is a signed integer type whose values range from - (232) to 232 - 1, all inclusive.
A.37. i64¶
A.37:1
i64
is a signed integer type whose values range from - (263) to 263 - 1, all inclusive.
A.38. i128¶
A.38:1
i128
is a signed integer type whose values range from - (2127) to 2127 - 1, all inclusive.
A.39. ibig¶
A.39:1
An ibig
is a signed integer type which can represent an unbounded
range of whole numbers.
A.40. identifier¶
A.40:1 An identifier is a lexical element that refers to a name.
A.41. integer literal¶
A.41:1 An integer literal is a numeric literal that denotes a whole number.
A.42. inferred type¶
A.42:1 An inferred type is a type that is deduced from type inference.
A.43. integer type¶
A.43:1 A integer type is a numeric type whose values denote whole numbers.
A.44. integer suffix¶
A.44:1 An integer suffix is a component of an integer literal that specifies the explicit integer type.
A.44:2
See IntegerSuffix
.
A.45. isize¶
A.45:1
isize
is a signed integer type with the same number of bits
as the platform’s pointer type, and is at least 16 types.
A.46. item¶
A.46:1 An item is a top level statement in a source file.
A.47. keyword¶
A.47:1 A keyword is a word in program text that has special meaning.
A.48. layout¶
A.48:1 Layout specifies the alignment, size and the relative offset of fields in a type.
A.49. line¶
A.49:1 A line is a sequence of zero or more characters followed by an end of line.
A.50. line comment¶
A.50:1 A line comment is a comment that spans over one line.
A.51. literal¶
A.51:1 A literal is a fixed value in a program source.
A.52. main function¶
A.52:1 A main function is a function that acts as an entry point into a program.
A.53. module¶
A.53:1 A module is a construct that contains zero or more items.
A.54. module attribute¶
A.54:1 A module attribute is an attribute which can be specified at the module level.
A.55. name¶
A.55:1 A name is an identifier that refers to an entity.
A.56. namespace¶
A.56:1 A namespace is a logical grouping of names such that the occurrence of a name in one namespace does not conflict with an occurrence of the same name in another namespace.
A.57. numeric literal¶
A.57:1 A numeric literal is a literal that denotes a number.
A.58. numeric type¶
A.58:1 A numeric type is a type whose values denote numbers.
A.59. octal literal¶
A.59:1 An octal literal is a integer literal that is in base 8.
A.60. operand¶
A.60:1 An operand is an expression nested within an expression.
A.61. panic¶
A.61:1 A panic is an abnormal program state caused by invoking the prelude defined function.
A.62. pointer type¶
A.62:1 A pointer type is a type that represents memory locations.
A.63. prelude¶
A.63:1 The prelude is a module which is loaded into every Hash program before the main text body of a module. It defines core language items which are required for the language and accompanying tools.
A.64. primitive representation¶
A.64:1 Primitive representation is the type representation of integer types.
A.65. punctuator¶
A.65:1
A punctuator is a character or a sequence of characters in the
Punctuation
category.
A.66. separator¶
A.66:1 A separator is a character or a string that separates adjacent lexical elements.
A.67. sequence type¶
A.67:1 A sequence type represents a sequence of elements.
A.68. signed integer type¶
A.68:1 A signed integer type is an integer type that can represent values denote negative whole numbers, zero, and positive whole numbers.
A.69. size¶
A.69:1 The size of a value is the size in bytes of a value.
A.70. slice¶
A.70:1 A slice is a value of a slice type.
A.71. slice type¶
A.71:1 A slice type is a sequence type that provides a view into a sequence of elements.
A.72. source file¶
A.72:1 A source file contains the program text of module attributes, and items.
A.73. str¶
A.73:1
A str
is a sequence type that represents a slice of 8-bit unsigned bytes.
A.74. string literal¶
A.74:1
A string literal is a sequence of Unicode characters enclosed in double quotes
"
.
A.74:2
See StringContent
.
A.75. suffixed float¶
A.75:1 A suffixed float is a float literal with a float suffix.
A.76. suffixed integer¶
A.76:1 A suffixed integer is an integer literal with an integer suffix.
A.77. syntactic category¶
A.77:1 A syntactic category is a nonterminal in the Backus-Naur Form grammar definition of the Hash programming language.
A.78. type¶
A.78:1 A type defines a set of values and a set of operations that act on those values.
A.79. type inference¶
A.79:1 Type inference is the deduction of an expected type of an arbitrary value.
A.80. type representation¶
A.80:1 Type representation specifies the layout of fields of abstract data types.
A.81. u8¶
A.81:1
u8
is an unsigned integer type whose values range from 0 to
28 - 1, all inclusive.
A.82. u16¶
A.82:1
u16
is an unsigned integer type whose values range from 0 to
216 - 1, all inclusive.
A.83. u32¶
A.83:1
u32
is an unsigned integer type whose values range from 0 to
232 - 1, all inclusive.
A.84. u64¶
A.84:1
u64
is an unsigned integer type whose values range from 0 to
264 - 1, all inclusive.
A.85. u128¶
A.85:1
u128
is an unsigned integer type whose values range from 0 to
2128 - 1, all inclusive.
A.86. ubig¶
A.86:1
An ubig
is a unsigned integer type which can represent zero, and unbounded
positive whole numbers.
A.87. unicode¶
A.87:1 Unicode is the colloquial name for the ISO/IEC 10646:2017 Universal Coded Character Set standard.
A.88. unsigned integer type¶
A.88:1 A unsigned integer type is an integer type that can represent values denote zero and positive whole numbers.
A.89. unsuffixed float¶
A.89:1 A unsuffixed float is a float literal without a float suffix.
A.90. unsuffixed integer¶
A.90:1 A unsuffixed integer is an integer literal without an integer suffix.
A.91. usize¶
A.91:1
usize
is a unsigned integer type with the same number of bits
as the platform’s pointer type, and is at least 16 types.
A.92. value¶
A.92:1 A value is either a literal or the result of a computation, that may be stored in a memory location, and interpreted based on a type.
A.93. zero-variant enum type¶
A.93:1 A zero-variant enum type has no values.