Top Projects

hwtest

hwtest is Scala 3 testing library for homeworks/problem sets.

TradeMaximizer

Tool used extensively by the BoardGameGeek community since 2007 for running multi-party trades known as “Math Trades”.

Other projects

scads (Scala Algorithms and Data Structures)

This isn't a full-fledged library, more a proof-of-concept built around this essay. The TLDR version is that type classes using implicits in Scala are *not* the same thing as type classes in Haskell, and bad things can happen if you treat them like they are.

scads demos a safer approach in Scala to managing data structures that need access to an implicit Ordered instance. This was done in Scala 2, but the ideas are also applicable to Scala 3.

lambdastepper

(Will likely eventually be integrated into hwtest.)

Tool for displaying the step-by-step evaluation of a lambda-calculus expression.

Here's an example reduction. The command

> (\x.\f.f x) ((\a.a a) b) (\c.c c)
produces the step-by-step output
> (\x.\f.f x) ((\a.a a) b) (\c.c c)
: ||||||||||||||||||||||||
: |||||||||||||||||||
: (\f.f ((\a.a a) b)) (\c.c c)
: ||||||||||||||||||||||||||||
: |||||||||||||||||||||
: (\c.c c) ((\a.a a) b)
: |||||||||||||||||||||
: |||||||||||||||||||||||
: (\a.a a) b ((\a.a a) b)
: ||||||||||
: |||
: b b ((\a.a a) b)
:     ||||||||||||
:     |||||
: b b (b b)
: Done (5 reductions).

coursetools

Small scripts I made public in the early days of GitHub Classroom, one for downloading student repos and one to make it easier to grade student turnins contained in pull requests.