s is an instance of ^a you want to accept at compile-time, which can be anything that implements the members you actually call using the syntax.^a is similar to generics which would be 'a (or 'A or 'T for example) but these are compile-time resolved, and allow for anything that fits all the requested usages within the method. (no interfaces required)