Pervasives
This 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.
Edit on GitHubAdded in 0.1.0
No other changes yet.
from "pervasives" include Pervasives
Functions and constants included in the Pervasives module.
Added in 0.1.0
No other changes yet.
(!) : (bool: Bool) => Bool
Computes the logical NOT (!) of the given operand.
Inverts the given Boolean value.
Parameters:
| param | type | description |
|---|---|---|
bool | Bool | The operand |
bool: The operandReturns:
| type | description |
|---|---|
Bool | The inverted value |
Bool: The inverted valueExamples:
!true // false
!false // true
Added in 0.1.0
No other changes yet.
(&&) : (left: Bool, right: Bool) => Bool
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 |
left: The first operandright: The second operandReturns:
| type | description |
|---|---|
Bool | The first operand if it is false or the value of the second operand otherwise |
Bool: The first operand if it is false or the value of the second operand otherwiseAdded in 0.1.0
No other changes yet.
(||) : (left: Bool, right: Bool) => Bool
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 |
left: The first operandright: The second operandReturns:
| type | description |
|---|---|
Bool | The first operand if it is true or the value of the second operand otherwise |
Bool: The first operand if it is true or the value of the second operand otherwiseAdded in 0.1.0
No other changes yet.
(==) : (value1: a, value2: a) => Bool
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 |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Bool | true if the values are structurally equal or false otherwise |
Bool: true if the values are structurally equal or false otherwiseAdded in 0.2.0
No other changes yet.
(!=) : (value1: a, value2: a) => Bool
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 |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Bool | false if the values are structurally equal or true otherwise |
Bool: false if the values are structurally equal or true otherwiseAdded in 0.1.0
No other changes yet.
is : (left: a, right: a) => Bool
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 |
left: The first operandright: The second operandReturns:
| type | description |
|---|---|
Bool | true if the values are physically equal or false otherwise |
Bool: true if the values are physically equal or false otherwiseAdded in 0.2.0
No other changes yet.
isnt : (value1: a, value2: a) => Bool
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 |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Bool | false if the values are physically equal or true otherwise |
Bool: false if the values are physically equal or true otherwiseAdded in 0.1.0
No other changes yet.
(<) : (num1: Number, num2: Number) => Bool
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 |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Bool | true if the first operand is less than the second operand or false otherwise |
Bool: true if the first operand is less than the second operand or false otherwiseAdded in 0.1.0
No other changes yet.
(>) : (num1: Number, num2: Number) => Bool
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 |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Bool | true if the first operand is greater than the second operand or false otherwise |
Bool: true if the first operand is greater than the second operand or false otherwiseAdded in 0.1.0
No other changes yet.
(<=) : (num1: Number, num2: Number) => Bool
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 |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Bool | true if the first operand is less than or equal to the second operand or false otherwise |
Bool: true if the first operand is less than or equal to the second operand or false otherwiseAdded in 0.1.0
No other changes yet.
(>=) : (num1: Number, num2: Number) => Bool
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 |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Bool | true if the first operand is greater than or equal to the second operand or false otherwise |
Bool: true if the first operand is greater than or equal to the second operand or false otherwiseAdded in 0.5.3
No other changes yet.
compare : (num1: a, num2: a) => Number
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 |
num1: The first operandnum2: The second operandReturns:
| 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 |
Number: A negative integer if the first operand is less than the second operand, 0 if they are equal, or a positive integer otherwiseAdded in 0.1.0
No other changes yet.
(+) : (num1: Number, num2: Number) => Number
Computes the sum of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The sum of the two operands |
Number: The sum of the two operandsAdded in 0.1.0
No other changes yet.
(-) : (num1: Number, num2: Number) => Number
Computes the difference of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The difference of the two operands |
Number: The difference of the two operandsAdded in 0.1.0
No other changes yet.
(*) : (num1: Number, num2: Number) => Number
Computes the product of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The product of the two operands |
Number: The product of the two operandsAdded in 0.1.0
No other changes yet.
(/) : (num1: Number, num2: Number) => Number
Computes the quotient of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The quotient of the two operands |
Number: The quotient of the two operandsAdded in 0.1.0
No other changes yet.
(%) : (num1: Number, num2: Number) => Number
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 |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The modulus of its operands |
Number: The modulus of its operandsAdded in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally existed in Number module |
(**) : (base: Number, power: Number) => Number
Computes the exponentiation of the given base and power.
Parameters:
| param | type | description |
|---|---|---|
base | Number | The base number |
power | Number | The exponent number |
base: The base numberpower: The exponent numberReturns:
| type | description |
|---|---|
Number | The base raised to the given power |
Number: The base raised to the given powerAdded in 0.1.0
No other changes yet.
incr : (value: Number) => Number
Increments the value by one.
Parameters:
| param | type | description |
|---|---|---|
value | Number | The value to increment |
value: The value to incrementReturns:
| type | description |
|---|---|
Number | The incremented value |
Number: The incremented valueAdded in 0.1.0
No other changes yet.
decr : (value: Number) => Number
Decrements the value by one.
Parameters:
| param | type | description |
|---|---|---|
value | Number | The value to decrement |
value: The value to decrementReturns:
| type | description |
|---|---|
Number | The decremented value |
Number: The decremented valueAdded in 0.2.0
No other changes yet.
(++) : (str1: String, str2: String) => String
Concatenate two strings.
Parameters:
| param | type | description |
|---|---|---|
str1 | String | The beginning string |
str2 | String | The ending string |
str1: The beginning stringstr2: The ending stringReturns:
| type | description |
|---|---|
String | The combined string |
String: The combined stringExamples:
"Foo" ++ "Bar" == "FooBar"
Added in 0.2.0
No other changes yet.
lnot : (value: Number) => Number
Computes the bitwise NOT of the operand.
Parameters:
| param | type | description |
|---|---|---|
value | Number | The operand |
value: The operandReturns:
| type | description |
|---|---|
Number | Containing the inverted bits of the operand |
Number: Containing the inverted bits of the operandAdded in 0.3.0
| version | changes |
|---|---|
0.2.0 | Originally named `land` |
0.3.0 | Renamed to `&` |
(&) : (value1: Number, value2: Number) => Number
Computes the bitwise AND (&) on the given operands.
Parameters:
| param | type | description |
|---|---|---|
value1 | Number | The first operand |
value2 | Number | The second operand |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Number | Containing a 1 in each bit position for which the corresponding bits of both operands are 1 |
Number: Containing a 1 in each bit position for which the corresponding bits of both operands are 1Added in 0.3.0
| version | changes |
|---|---|
0.2.0 | Originally named `lor` |
0.3.0 | Renamed to `|` |
(|) : (value1: Number, value2: Number) => Number
Computes the bitwise OR (|) on the given operands.
Parameters:
| param | type | description |
|---|---|---|
value1 | Number | The first operand |
value2 | Number | The second operand |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Number | Containing a 1 in each bit position for which the corresponding bits of either or both operands are 1 |
Number: Containing a 1 in each bit position for which the corresponding bits of either or both operands are 1Added 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 `^` |
(^) : (value1: Number, value2: Number) => Number
Computes the bitwise XOR (^) on the given operands.
Parameters:
| param | type | description |
|---|---|---|
value1 | Number | The first operand |
value2 | Number | The second operand |
value1: The first operandvalue2: The second operandReturns:
| type | description |
|---|---|
Number | Containing a 1 in each bit position for which the corresponding bits of either but not both operands are 1 |
Number: Containing a 1 in each bit position for which the corresponding bits of either but not both operands are 1Added in 0.3.0
| version | changes |
|---|---|
0.2.0 | Originally named `lsl` |
0.3.0 | Renamed to `<<` |
(<<) : (value: Number, amount: Number) => Number
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 |
value: The value to shiftamount: The number of bits to shift byReturns:
| type | description |
|---|---|
Number | The shifted value |
Number: The shifted valueAdded in 0.3.0
| version | changes |
|---|---|
0.2.0 | Originally named `lsr` |
0.3.0 | Renamed to `>>>` |
(>>>) : (value: Number, amount: Number) => Number
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 |
value: The value to shiftamount: The amount to shift byReturns:
| type | description |
|---|---|
Number | The shifted value |
Number: The shifted valueAdded in 0.3.0
| version | changes |
|---|---|
0.2.0 | Originally named `asr` |
0.3.0 | Renamed to `>>` |
(>>) : (value: Number, amount: Number) => Number
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 |
value: The value to shiftamount: The amount to shift byReturns:
| type | description |
|---|---|
Number | The shifted value |
Number: The shifted valueAdded in 0.1.0
No other changes yet.
toString : (value: a) => String
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 |
value: The operandReturns:
| type | description |
|---|---|
String | The operand, as a string |
String: The operand, as a stringAdded in 0.1.0
| version | changes |
|---|---|
0.6.0 | Added support for custom suffixes |
print : (value: a, ?suffix: String) => Void
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 |
value: The operand?suffix: The string to print after the argumentAdded in 0.1.0
No other changes yet.
ignore : (value: a) => Void
Accepts any value and always returns void.
Parameters:
| param | type | description |
|---|---|---|
value | a | The value to ignore |
value: The value to ignoreAdded in 0.1.0
No other changes yet.
assert : (condition: Bool) => Void
Assert that the given Boolean condition is true.
Parameters:
| param | type | description |
|---|---|---|
condition | Bool | The condition to assert |
condition: The condition to assertThrows:
AssertionError
- When the
conditionis false
Examples:
assert 3 > 2
assert true
Added in 0.3.0
No other changes yet.
throw : (exn: Exception) => a
Throw an exception. Currently, exceptions cannot be caught and will crash your program.
Parameters:
| param | type | description |
|---|---|---|
exn | Exception | The exception to be thrown |
exn: The exception to be thrownReturns:
| type | description |
|---|---|
a | Anything and nothing—your program won’t continue past a throw |
a: Anything and nothing—your program won’t continue past a throwfail : (message: String) => a
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 |
message: The reason for the failureReturns:
| type | description |
|---|---|
a | Anything and nothing—your program won’t continue past a fail expression |
a: Anything and nothing—your program won’t continue past a fail expressionAdded in 0.2.0
No other changes yet.
identity : (value: a) => a
Provides the operand untouched.
Parameters:
| param | type | description |
|---|---|---|
value | a | The value to return |
value: The value to returnReturns:
| type | description |
|---|---|
a | The value untouched |
a: The value untouchedAdded in 0.1.0
No other changes yet.
box : (value: a) => Box<a>
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 |
value: The initial value inside the boxReturns:
| type | description |
|---|---|
Box<a> | The box containing the initial value |
Box<a>: The box containing the initial valueAdded in 0.1.0
No other changes yet.
unbox : (value: Box<a>) => a
Retrieves the current value from a box.
Parameters:
| param | type | description |
|---|---|---|
value | Box<a> | The box to unwrap |
value: The box to unwrapReturns:
| type | description |
|---|---|
a | The value inside the box |
a: The value inside the box