From e492ea132d3b73d2597fc8b832128dc40fed63ba Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Sun, 10 Nov 2013 11:32:28 -0500 Subject: [PATCH] Add option type module. --- src/hope_option.erl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/hope_option.erl diff --git a/src/hope_option.erl b/src/hope_option.erl new file mode 100644 index 0000000..ad0adac --- /dev/null +++ b/src/hope_option.erl @@ -0,0 +1,27 @@ +-module(hope_option). + +-export_type([ t/1 + ]). + +-export([ put/2 + , get/2 + , map/2 + ]). + + +-type t(A) :: none | {some, A}. + + +put(X, F) -> + case F(X) + of true -> {some, X} + ; false -> none + end. + + +get({some, X}, _) -> X; +get(none , Y) -> Y. + + +map({some, X}, F) -> {some, F(X)}; +map(none , _) -> none. -- 2.20.1