Erlang Dependent Types Compiler Concurrency OTP Conclusion Actors data Actor : Type → Type → Type proc : Actor l () Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Actors data Actor : Type → Type → Type proc : Actor l () recieve : Actor l l Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Actors data Actor : Type → Type → Type proc : Actor l () recieve : Actor l l spawn : (Actor l’ a) → Actor l (ActorID l’) data ActorID : Type → Type pid : ActorID l Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Actors data Actor : Type → Type → Type proc : Actor l () recieve : Actor l l spawn : (Actor l’ a) → Actor l (ActorID l’) data ActorID : Type → Type pid : ActorID l send : ActorID l’ → l’ → Actor l () Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Generic Behaviours • gen server • gen fsm • gen event Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion gen server data GSL : (cl : Type) → (cl → Type) → Type → Type data GSRef : GSL cl cr ct → Type Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion gen server data GS : (GSL cl cr ct) → Type → Type → Type spawn : (GS l st i) → i → EIO (GSRef i) Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Conclusion • We can produce verified concurrent programs in Idris • We can compile these programs to work with Erlang • We can run verified programs in Erlang Sam Elliott Erlang Meets Dependent Types
Erlang Dependent Types Compiler Concurrency OTP Conclusion Thanks To Edwin Brady Rob Stewart Skyscanner & Mike Moran Sam Elliott Erlang Meets Dependent Types