Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature request] add error-awared functions like: makei_error, map_error #1029

Open
tonyfettes opened this issue Sep 21, 2024 · 2 comments
Open

Comments

@tonyfettes
Copy link
Contributor

It's often the case when I want to construct an Array[T] or FixedArray[T] from a function that can raise error. For example, I want to construct a Tensor from a Json value:

fn main {
  match json {
    Json::Number(x) => Tensor::new(x)
    Json::Array(xs) => {
      let value : FixedArray[Tensor] = FixedArray::makei(xs.length(), fn(i) {
        Tensor::from_json!(xs[i], @json.add_index(path, i))
      })
      Tensor::stack(value)
    }
    _ => raise @json.JsonDecodeError((path, "Expected an array"))
  }
}

For now it is not possible to achieve this, since FixedArray::makei require the callback to be error-free.

@tonyfettes tonyfettes changed the title [feature request] add error-awared makei, map function [feature request] add error-awared functions like: makei_error, map_error Sep 21, 2024
@htoooth
Copy link

htoooth commented Sep 23, 2024

@tonyfettes Maybe the functions of all core module have to add the error feature. But i wish you do not use error feature in you code. Because this feature influences all related code if you use it. Just like now scene you face.

@bobzhang
Copy link
Contributor

bobzhang commented Sep 25, 2024

let value : FixedArray[Tensor] = FixedArray::makei(xs.length(), fn(i) {
        Tensor::from_json!(xs[i], @json.add_index(path, i))
      })
Tensor::stack(value)

Note you work around this using for .. in , I am hestitant to add such API since eventually want our map to propagate callbacks with Error something like this:

map[A](self : Array[A], f : (A) ->B!_) -> Array[B]!_ // when call back has error, result has error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants