diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/bool.gleam | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gleam/bool.gleam b/src/gleam/bool.gleam index e67fe66..c64ee97 100644 --- a/src/gleam/bool.gleam +++ b/src/gleam/bool.gleam @@ -323,3 +323,36 @@ pub fn to_string(bool: Bool) -> String { True -> "True" } } + +/// Run a callback function if the given bool is `True`, otherwise return a +/// default value. +/// +/// This function is suitable for `use` expressions. +/// +/// ## Examples +/// +/// ```gleam +/// > let name = "Kamaka" +/// > use <- guard(name != "", or: "friend") +/// > "Hello, " <> name +/// "Hello, Kamaka" +/// ``` +/// +/// ```gleam +/// > let name = "" +/// > use <- guard(name != "", or: "friend") +/// > "Hello, " <> name +/// "Hello, friend" +/// ``` +/// +/// +pub fn guard( + requirement: Bool, + or alternative: t, + then consequence: fn() -> t, +) -> t { + case requirement { + True -> consequence() + False -> alternative + } +} |