Interactors in Elixir following Clean Architecture guidelines

mod = MyApp.BehaviourImplementingModule
MyApp.func(mod)

There’s no type safety on the beam. A module as typespec is module(), which is a alias for atom(). It’s basically working by ducktyping. If the correct callbacks are defined on the module of the supplied name and they accept/return the correct values everything is fine. If not it’ll fail at some time.