Quantcast
Channel: ReScript Forum - Latest posts
Viewing all articles
Browse latest Browse all 2592

Rescript frustration

$
0
0

sure, i’d like to think i can:

for option:

let getOrElse = (opt, fn) => switch opt {
  | Some(val) => val
  | None => fn()
}

also repeat/reduce (see below):

for result:

let getOr = (res, err) =>
  switch res {
  | Ok(val) => val
  | Err(_) => err
  }

let getOrElse = (res, fn) =>
  switch res {
  | Ok(val) => val
  | Err(_) => fn()
  }

let map = (res, fn) =>
  switch res {
  | Ok(val) => Ok(fn(val))
  | Err(err) => Err(err)
  }

let mapErr = (res, fn) =>
  switch res {
  | Ok(val) => Ok(val)
  | Err(err) => Err(fn(err))
  }

let andThen = (res, fn) =>
  switch res {
  | Ok(val) => fn(val)
  | Err(err) => Err(err)
  }

let orElse = (res, fn) =>
  switch res {
  | Ok(val) => Ok(val)
  | Err(err) => fn(err)
  }

let rec repeat = (res, fn) =>
  switch res {
  | Ok(val) =>
    switch fn(val) {
    | Ok(Some(ret)) => repeat(Ok(ret), fn)
    | Ok(None) => res
    | Err(err) => Err(err)
    }
  | Err(err) => Err(err)
  }

i’ll think some more about option and see what else i can come up with. the looping (repeat//reduce) functionality is important because there’s no good way to break or return from loops


Viewing all articles
Browse latest Browse all 2592

Trending Articles