Hey folks, we've got another rendition of ny-scala, this time hosted by Foursquare! Ian Tabolt from Foursquare & Lance Gatlin (who will be joining us again after his previous meetup talk in October) will be presenting in back-to-back 25 minute sessions. Doors will open at 6:30pm & talks will start around 7:00pm.
Food will be provided, & drinks TBD.
Ian Tabolt: "Algebra With Types In Scala"
Description: Algebraic data types (case classes & sealed traits), combined with pattern matching, are arguably Scala's killer feature. More than a syntactic convenience, ADTs give us a way to precisely model the inputs & outputs of our programs & avoid unnecessary complexity of handling impossible states. This talk will show that the complexity of a type is a real quantifiable cost, & will put the "algebra" in algebraic data types by exploring new ways to reason about types using this complexity.
Ian is a software engineer on the developer systems team at Foursquare. He works on improving the core Scala ecosystem in their massive "monorepo" code base, which is comprised of millions of lines of Scala over thousands of packages. Aside from Scala, he enjoys cycling, has two dogs, & holds Yankees season tickets.
Lance Gatlin: "Testing With Final Tagless"
Description: In this talk, we'll explore using the testing library Discipline (with ScalaCheck) to automatically test "laws" (i.e. rules) against an example final tagless algebra. Using a more generic rule testing approach, we will write less testing code & achieve higher code coverage. This talk builds on the October talk "Finally! Tagless & Fancy Free Monads". It is based on the ideas laid out by Marcin Rzenicki in his blog post "Tagless with DisciplineTesting Scala Code The Right Way" (https://medium.com/iterators/tagless-with-discipline-testing-scala-code-the-right-way-e74993a0d9b1).
At the end of this talk, you'll know:* How to write Discipline laws to test a final tagless algebra* How this approach reduces the amount of explicit testing code needed* How to test laws against different monadic contexts (e.g. Id, Future, DBIO, etc)
Also recommended is a quick review of these before the talk:* Monads* Tagless final basics* ScalaCheck
Lance joins us again at ny-scala after his previous talk in October. You can find his bio from the previous meetup event: https://www.meetup.com/ny-scala/events/254439270/.