From ed9905af6fa1dba6f89759d6dbfc970426122bde Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Mon, 14 Jul 2014 20:48:04 -0400 Subject: [PATCH] Add specs. --- src/hope_option.erl | 6 ++++++ src/hope_result.erl | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/src/hope_option.erl b/src/hope_option.erl index 622c06d..c461d04 100644 --- a/src/hope_option.erl +++ b/src/hope_option.erl @@ -18,14 +18,20 @@ . +-spec put(A, fun((A) -> boolean())) -> + t(A). put(X, F) -> case F(X) of true -> {some, X} ; false -> none end. +-spec get(t(A), Default :: A) -> + A. get({some, X}, _) -> X; get(none , Y) -> Y. +-spec map(t(A), fun((A) -> (B))) -> + t(B). map({some, X}, F) -> {some, F(X)}; map(none , _) -> none. diff --git a/src/hope_result.erl b/src/hope_result.erl index a40629a..5d0ea7e 100644 --- a/src/hope_result.erl +++ b/src/hope_result.erl @@ -16,6 +16,13 @@ . +-spec pipe([F], X) -> + t(Ok, Error) + when X :: any() + , Ok :: any() + , Error :: any() + , F :: fun((X) -> t(Ok, Error)) + . pipe([] , X) -> X; pipe([F|Fs], X) -> case F(X) -- 2.20.1