diff options
author | Al Dee <amyalicedee@gmail.com> | 2020-05-22 13:34:23 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-05-26 19:19:29 +0100 |
commit | 33bbf866ed3be72ccce955e5b2ee1bb99fa45e97 (patch) | |
tree | a757a075abfdf8f50114890e7035c9eaa24f79c6 | |
parent | d33db5b1bcc1f48b9c311419c3d76bb0d17531df (diff) | |
download | gleam_stdlib-33bbf866ed3be72ccce955e5b2ee1bb99fa45e97.tar.gz gleam_stdlib-33bbf866ed3be72ccce955e5b2ee1bb99fa45e97.zip |
Add the Option type.
-rw-r--r-- | src/gleam/option.gleam | 38 | ||||
-rw-r--r-- | test/gleam/option_test.gleam | 18 |
2 files changed, 56 insertions, 0 deletions
diff --git a/src/gleam/option.gleam b/src/gleam/option.gleam new file mode 100644 index 0000000..30bc1e2 --- /dev/null +++ b/src/gleam/option.gleam @@ -0,0 +1,38 @@ +/// Option represents a value that may be present or not. Some means the value is +/// present, None means the value is not. +/// +/// This is Gleam's alternative to having a value that could be Null, as is +/// possible in some other languages. +/// +pub type Option(a) { + Some(a) + None +} + +/// Check whether the option is a Some value. +/// +/// ## Examples +/// +/// > is_some(Some(1)) +/// True +/// +/// > is_some(None) +/// False +/// +pub fn is_some(option: Option(a)) -> Bool { + option != None +} + +/// Check whether the option is a None value. +/// +/// ## Examples +/// +/// > is_none(Some(1)) +/// False +/// +/// > is_none(None) +/// True +/// +pub fn is_none(option: Option(a)) -> Bool { + option == None +} diff --git a/test/gleam/option_test.gleam b/test/gleam/option_test.gleam new file mode 100644 index 0000000..2361e32 --- /dev/null +++ b/test/gleam/option_test.gleam @@ -0,0 +1,18 @@ +import gleam/should +import gleam/option.{Some, None} + +pub fn is_some_test() { + option.is_some(Some(1)) + |> should.be_true + + option.is_some(None) + |> should.be_false +} + +pub fn is_none() { + option.is_none(Some(1)) + |> should.be_false + + option.is_none(None) + |> should.be_true +} |