Packages
gleam_stdlib
0.10.0
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
src/gleam/bool.gleam
import gleam/order.{Order}
/// A type with two possible values, True and False. Used to indicate whether
/// things are... true or false!
///
/// Often is it clearer and offers more type safety to define a custom type
/// than to use Bool. For example, rather than having a `is_teacher: Bool`
/// field consider having a `role: SchoolRole` field where SchoolRole is a custom
/// type that can be either Student or Teacher.
///
pub type Bool =
Bool
/// Returns the opposite bool value.
///
/// This is the same as the `!` or `not` operators in some other languages.
///
/// ## Examples
///
/// > negate(True)
/// False
///
/// > negate(False)
/// True
///
pub fn negate(bool: Bool) -> Bool {
case bool {
True -> False
False -> True
}
}
/// Compares two bools and returns the first values Order to the second.
///
/// ## Examples
///
/// > import gleam/order
/// > compare(True, False)
/// order.Gt
///
pub fn compare(a: Bool, with b: Bool) -> Order {
case a, b {
True, True -> order.Eq
True, False -> order.Gt
False, False -> order.Eq
False, True -> order.Lt
}
}
/// Returns True if either bool value is True.
///
/// ## Examples
///
/// > max(True, False)
/// True
///
/// > max(False, True)
/// True
///
/// > max(False, False)
/// False
///
pub fn max(a: Bool, b: Bool) -> Bool {
case a {
True -> True
False -> b
}
}
/// Returns False if either bool value is False.
///
/// ## Examples
///
/// > max(True, False)
/// False
///
/// > max(False, True)
/// False
///
/// > max(False, False)
/// False
///
pub fn min(a: Bool, b: Bool) -> Bool {
case a {
False -> False
True -> b
}
}
/// Returns a numeric representation of the given bool.
///
/// ## Examples
///
/// > to_int(True)
/// 1
///
/// > to_int(False)
/// 0
///
pub fn to_int(bool: Bool) -> Int {
case bool {
False -> 0
True -> 1
}
}