Skip to content

Instantly share code, notes, and snippets.

@squito
Last active December 18, 2015 17:39
Show Gist options
  • Save squito/5820138 to your computer and use it in GitHub Desktop.
Save squito/5820138 to your computer and use it in GitHub Desktop.
trait ArraySummer[-T] {
def sum(t: T): Float
}
/** one TypeClass per concrete implementation */
object SpecificSummers {
implicit object SimpleWrappedFloatArraySummer extends ArraySummer[SimpleWrappedFloatArray] {
def sum(arr: SimpleWrappedFloatArray): Float = {
...
}
}
implicit object FloatArrayAsBufferSummer extends ArraySummer[FloatArrayAsBuffer] {
def sum(arr: FloatArrayAsBuffer): Float = {
...
}
}
implicit object FloatArraySliceSummer extends ArraySummer[FloatArraySlice] {
def sum(arr: FloatArraySlice): Float = {
...
}
}
}
/** one TypeClass for all implementations of ArrayLike[Float] */
object GenericSummers {
implicit object ArrayLikeSummer extends ArraySummer[ArrayLike[Float]] {
def sum(arr: ArrayLike[Float]): Float = {
...
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment