futhark icon indicating copy to clipboard operation
futhark copied to clipboard

Operator overloading?

Open entropylost opened this issue 1 year ago • 1 comments

Is there any way to have operator overloading?

For example, if I have a vector type with a def (+) (a: Vector) (b: Vector): Vector, I'd like to be able to use it and other + definitions without having to do vector.+ everywhere.

This could be implemented by just making a list of function definitions and scanning until you find one that typechecks, but that might result in code instability. Alternatively, typeclasses could be used like haskell, although I feel like that'd be quite an effort to make.

entropylost avatar Aug 23 '24 21:08 entropylost

There is no operator overloading in Futhark.

In the long term, we have considered adding type classes, but we haven't considered a specific design yet. I think we are waiting for OCaml to figure out how it fits nicely with a module system.

Local opens can be used to reduce the boilerplate slightly. Instead of x vector.+ y vector.+ z you could write vector.(x + y + z).

athas avatar Aug 24 '24 08:08 athas