Skip to content

Instantly share code, notes, and snippets.

@coreyhaines
Last active June 19, 2019 19:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save coreyhaines/2a778c3a033413ae078be19a64e2118f to your computer and use it in GitHub Desktop.
Save coreyhaines/2a778c3a033413ae078be19a64e2118f to your computer and use it in GitHub Desktop.
Simple Maybe<T> approximation in typescript
type Maybe<T> = T | undefined;
function maybeMap<T, U>(mv: Maybe<T>, f: (v:T) => U) : Maybe<U> {
if(mv !== undefined) {
return f(mv);
}else{
return undefined;
}
}
function maybeBind<T, U>(mv: Maybe<T>, f: (v:T) => Maybe<U>) : Maybe<U> {
if(mv !== undefined) {
return f(mv);
}else{
return undefined;
}
}
function withDefault<T>(mv : Maybe<T>, defaultValue : T) : T {
if(mv === undefined) {
return defaultValue;
}else{
return mv;
}
}
function maybeFromNullable<T>(v : T | null) : Maybe<T> {
if(v === null) {
return undefined;
}else{
return v;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment