Pervasives
Edit on GitHubThis module is automatically imported into every Grain program. You can think of it as the global environment. Although it is automatically imported, it can still be imported manually.
Added in 0.1.0
No other changes yet.
Values
Functions and constants included in the Pervasives module.
Pervasives.(!)
Added in 0.1.0
No other changes yet.
Computes the logical NOT (!
) of the given operand.
Inverts the given Boolean value.
Parameters:
param | type | description |
---|---|---|
bool |
Bool |
The operand |
Returns:
type | description |
---|---|
Bool |
The inverted value |
Examples:
Pervasives.(&&)
Added in 0.1.0
No other changes yet.
Computes the logical AND (&&
) of the given operands.
If the first operand is false
, returns false
without evaluating the second operand.
If the first operand is true
, returns the value of the second operand.
Parameters:
param | type | description |
---|---|---|
left |
Bool |
The first operand |
right |
Bool |
The second operand |
Returns:
type | description |
---|---|
Bool |
The first operand if it is false or the value of the second operand otherwise |
Pervasives.(||)
Added in 0.1.0
No other changes yet.
Computes the logical OR ||
of the given operands.
If the first operand is true
, returns true
without evaluating the second operand.
If the first operand is false
, returns the value of the second operand.
Parameters:
param | type | description |
---|---|---|
left |
Bool |
The first operand |
right |
Bool |
The second operand |
Returns:
type | description |
---|---|
Bool |
The first operand if it is true or the value of the second operand otherwise |
Pervasives.(==)
Added in 0.1.0
No other changes yet.
Check that two values are equal. This checks for structural equality, so it also works for comparing things like tuples and lists.
Parameters:
param | type | description |
---|---|---|
value1 |
a |
The first operand |
value2 |
a |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the values are structurally equal or false otherwise |
Pervasives.(!=)
Added in 0.2.0
No other changes yet.
Check that two values are not equal. This checks for structural equality, so it also works for comparing things like tuples and lists.
Parameters:
param | type | description |
---|---|---|
value1 |
a |
The first operand |
value2 |
a |
The second operand |
Returns:
type | description |
---|---|
Bool |
false if the values are structurally equal or true otherwise |
Pervasives.is
Added in 0.1.0
No other changes yet.
Checks that two values are physically equal. Use this operator if you don’t need or want structural equality.
Parameters:
param | type | description |
---|---|---|
left |
a |
The first operand |
right |
a |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the values are physically equal or false otherwise |
Pervasives.isnt
Added in 0.2.0
No other changes yet.
Checks that two values are not physically equal. Use this operator if you don’t need or want structural equality.
Parameters:
param | type | description |
---|---|---|
value1 |
a |
The first operand |
value2 |
a |
The second operand |
Returns:
type | description |
---|---|
Bool |
false if the values are physically equal or true otherwise |
Pervasives.(<)
Added in 0.1.0
No other changes yet.
Checks if the first operand is less than the second operand.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the first operand is less than the second operand or false otherwise |
Pervasives.(>)
Added in 0.1.0
No other changes yet.
Checks if the first operand is greater than the second operand.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the first operand is greater than the second operand or false otherwise |
Pervasives.(<=)
Added in 0.1.0
No other changes yet.
Checks if the first operand is less than or equal to the second operand.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the first operand is less than or equal to the second operand or false otherwise |
Pervasives.(>=)
Added in 0.1.0
No other changes yet.
Checks if the first operand is greater than or equal to the second operand.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Bool |
true if the first operand is greater than or equal to the second operand or false otherwise |
Pervasives.compare
Added in 0.5.3
No other changes yet.
Compares the first argument to the second argument and produces an integer result.
Provides a consistent ordering over all types and is suitable for sorting and other kinds of ordering.
compare
treats NaN
differently than the other comparison operators in that it considers NaN
equal to itself and smaller than any other number.
Parameters:
param | type | description |
---|---|---|
num1 |
a |
The first operand |
num2 |
a |
The second operand |
Returns:
type | description |
---|---|
Number |
A negative integer if the first operand is less than the second operand, 0 if they are equal, or a positive integer otherwise |
Pervasives.(+)
Added in 0.1.0
No other changes yet.
Computes the sum of its operands.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
The sum of the two operands |
Pervasives.(-)
Added in 0.1.0
No other changes yet.
Computes the difference of its operands.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
The difference of the two operands |
Pervasives.(*)
Added in 0.1.0
No other changes yet.
Computes the product of its operands.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
The product of the two operands |
Pervasives.(/)
Added in 0.1.0
No other changes yet.
Computes the quotient of its operands.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
The quotient of the two operands |
Pervasives.(%)
Added in 0.1.0
No other changes yet.
Computes the remainder of the division of the first operand by the second. The result will have the sign of the second operand.
Parameters:
param | type | description |
---|---|---|
num1 |
Number |
The first operand |
num2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
The modulus of its operands |
Pervasives.(**)
Added in 0.6.0
version | changes |
---|---|
0.5.4 | Originally existed in Number module |
Computes the exponentiation of the given base and power.
Parameters:
param | type | description |
---|---|---|
base |
Number |
The base number |
power |
Number |
The exponent number |
Returns:
type | description |
---|---|
Number |
The base raised to the given power |
Pervasives.incr
Added in 0.1.0
No other changes yet.
Increments the value by one.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The value to increment |
Returns:
type | description |
---|---|
Number |
The incremented value |
Pervasives.decr
Added in 0.1.0
No other changes yet.
Decrements the value by one.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The value to decrement |
Returns:
type | description |
---|---|
Number |
The decremented value |
Pervasives.(++)
Added in 0.2.0
No other changes yet.
Concatenate two strings.
Parameters:
param | type | description |
---|---|---|
str1 |
String |
The beginning string |
str2 |
String |
The ending string |
Returns:
type | description |
---|---|
String |
The combined string |
Examples:
Pervasives.lnot
Added in 0.2.0
No other changes yet.
Computes the bitwise NOT of the operand.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The operand |
Returns:
type | description |
---|---|
Number |
Containing the inverted bits of the operand |
Pervasives.(&)
Added in 0.3.0
version | changes |
---|---|
0.2.0 | Originally named `land` |
0.3.0 | Renamed to `&` |
Computes the bitwise AND (&
) on the given operands.
Parameters:
param | type | description |
---|---|---|
value1 |
Number |
The first operand |
value2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
Containing a 1 in each bit position for which the corresponding bits of both operands are 1 |
Pervasives.(|)
Added in 0.3.0
version | changes |
---|---|
0.2.0 | Originally named `lor` |
0.3.0 | Renamed to `|` |
Computes the bitwise OR (|
) on the given operands.
Parameters:
param | type | description |
---|---|---|
value1 |
Number |
The first operand |
value2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
Containing a 1 in each bit position for which the corresponding bits of either or both operands are 1 |
Pervasives.(^)
Added in 0.3.0
version | changes |
---|---|
0.1.0 | The `^` operator was originally an alias of `unbox` |
0.2.0 | Originally named `lxor` |
0.3.0 | Renamed to `^` |
Computes the bitwise XOR (^
) on the given operands.
Parameters:
param | type | description |
---|---|---|
value1 |
Number |
The first operand |
value2 |
Number |
The second operand |
Returns:
type | description |
---|---|
Number |
Containing a 1 in each bit position for which the corresponding bits of either but not both operands are 1 |
Pervasives.(<<)
Added in 0.3.0
version | changes |
---|---|
0.2.0 | Originally named `lsl` |
0.3.0 | Renamed to `<<` |
Shifts the bits of the value left by the given number of bits.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The value to shift |
amount |
Number |
The number of bits to shift by |
Returns:
type | description |
---|---|
Number |
The shifted value |
Pervasives.(>>>)
Added in 0.3.0
version | changes |
---|---|
0.2.0 | Originally named `lsr` |
0.3.0 | Renamed to `>>>` |
Shifts the bits of the value right by the given number of bits, preserving the sign bit.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The value to shift |
amount |
Number |
The amount to shift by |
Returns:
type | description |
---|---|
Number |
The shifted value |
Pervasives.(>>)
Added in 0.3.0
version | changes |
---|---|
0.2.0 | Originally named `asr` |
0.3.0 | Renamed to `>>` |
Shifts the bits of the value right by the given number of bits.
Parameters:
param | type | description |
---|---|---|
value |
Number |
The value to shift |
amount |
Number |
The amount to shift by |
Returns:
type | description |
---|---|
Number |
The shifted value |
Pervasives.toString
Added in 0.1.0
No other changes yet.
Converts the given operand to a string. Provides a better representation of data types if those types are provided from the module.
Parameters:
param | type | description |
---|---|---|
value |
a |
The operand |
Returns:
type | description |
---|---|
String |
The operand, as a string |
Pervasives.print
Added in 0.1.0
version | changes |
---|---|
0.6.0 | Added support for custom suffixes |
Prints the given operand to the console. Works for any type. Internally, calls toString
on the operand, so a better representation of data type will be printed if those types
are provided from the module.
Parameters:
param | type | description |
---|---|---|
value |
a |
The operand |
?suffix |
String |
The string to print after the argument |
Pervasives.ignore
Added in 0.1.0
No other changes yet.
Accepts any value and always returns void
.
Parameters:
param | type | description |
---|---|---|
value |
a |
The value to ignore |
Pervasives.assert
Added in 0.1.0
No other changes yet.
Assert that the given Boolean condition is true
.
Parameters:
param | type | description |
---|---|---|
condition |
Bool |
The condition to assert |
Throws:
AssertionError
- When the
condition
is false
Examples:
Pervasives.throw
Added in 0.3.0
No other changes yet.
Throw an exception. Currently, exceptions cannot be caught and will crash your program.
Parameters:
param | type | description |
---|---|---|
exn |
Exception |
The exception to be thrown |
Returns:
type | description |
---|---|
a |
Anything and nothing—your program won’t continue past a throw |
Pervasives.fail
Unconditionally throw a Failure
exception with a message.
Currently, Exceptions cannot be caught and will crash your program.
Parameters:
param | type | description |
---|---|---|
message |
String |
The reason for the failure |
Returns:
type | description |
---|---|
a |
Anything and nothing—your program won’t continue past a fail expression |
Pervasives.identity
Added in 0.2.0
No other changes yet.
Provides the operand untouched.
Parameters:
param | type | description |
---|---|---|
value |
a |
The value to return |
Returns:
type | description |
---|---|
a |
The value untouched |
Pervasives.box
Added in 0.1.0
No other changes yet.
Creates a box containing the given initial value.
Values inside a box can be swapped out with the :=
operator.
Generally, let mut
expressions are preferable to using a Box.
Parameters:
param | type | description |
---|---|---|
value |
a |
The initial value inside the box |
Returns:
type | description |
---|---|
Box<a> |
The box containing the initial value |
Pervasives.unbox
Added in 0.1.0
No other changes yet.
Retrieves the current value from a box.
Parameters:
param | type | description |
---|---|---|
value |
Box<a> |
The box to unwrap |
Returns:
type | description |
---|---|
a |
The value inside the box |