STLC using generic programming and Stepahnie Weirich's Agda code