From ca5185d719f37b7fddbb9e3598c9156a29ff957c Mon Sep 17 00:00:00 2001 From: rowan Date: Mon, 31 Mar 2025 16:16:59 -0500 Subject: [PATCH] add some more documentation --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/README.md b/README.md index 59bb54c..149b861 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,73 @@ result.isErr() // true None == None() // true ``` +## Documentation + +### curry +> (* -> a) -> (* -> a) + +Returns a curried equivalent of the provided function. + +```js +import { curry } from './curry.js' + +const add = (a, b, c) => a + b + c +const curriedAdd = curry(add) +const add1 = curriedAdd(1) +const add3 = add1(2) +const add4 = curriedAdd(2, 2) + +const six = add3(3) // 6 +const eight = add4(2) // 7 +const twelve = curriedAdd(4, 4, 4) // 12 +``` + +### Option + +Represents a value which may not exist. + +#### Methods +##### of :: Option m => m a ~> (a -> m b) -> m b +> Option.of\(value: a) -> Option\ + +##### zero :: Option f => () -> f a +> Option.zero\(value: a) -> Option\ + +##### chain :: Option m => m a ~> (a -> m b) -> m b +> Option\.chain\(fn: (value: T) -> Option) -> Option\ + +##### map :: Option f => f a ~> (a -> b) -> f b +> Option\.map\(fn: (value: T) -> U) -> Option\ + +##### alt :: Option f => f a ~> f a -> f a +> Option\.alt(other: Option\) -> Option\ + +##### fold :: Option f => f a ~> ((b, a) -> b, b) -> b +> Option\.fold\(fn: ((acc: U, value: T) -> U, initial: U) -> U) -> U + +### Result + +Represents a value which may fail. + +#### Methods +##### of :: Result m => m a ~> (a -> m b) -> m b +> Result.of\(value: a) -> Result\ + +##### zero :: Result f => () -> f a +> Result.zero() -> Result\<(), ()\> + +##### chain :: Result m => m a ~> (a -> m b) -> m b +> Result\.chain\(fn: (value: T) -> Result) -> Result\ + +##### map :: Result f => f a ~> (a -> b) -> f b +> Result\.map\(fn: (value: T) -> U) -> Result\ + +##### alt :: Result f => f a ~> f a -> f a +> Result\.alt(other: Result\) -> Result\ + +##### fold :: Result f => f a ~> ((b, a) -> b, b) -> b +> Result\.fold\(fn: ((acc: U, value: T) -> U, initial: U) -> U) -> U + +##### bimap :: Result f => f a c ~> (a -> b, c -> d) -> f b d +> Result\.bimap\(x: (value: T1) -> T2, y: (error: E1) -> E2) -> Result\ +