scala - overloading a function for a bunch of types -


suppose define arithmetic operators functional types () => int, () => double etc in following manner

def + (a : () => int, b : () => int) =        new (() => int) {                def apply() = a() + b()        } 

is there way avoid boiler plate code in defining similar functions possible argument type combinations? these types can built-in ones (int, long, double), user-defined ones (like currency, quantity etc), , option[t] t can before mentioned types.

def + (a : () => option[int], b : () => double) =      new (() => option[double])          {             // specific code factored out             def apply() =                  a() map { _ + b() }           } 

you can create trait instances define concrete implementation of operations particular type. require trait implicit parameter operations , invoke these concrete implementations.

for example, check sources of scala.math.numeric.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -