You might not need GADTs for that in Unison
The "other" technique for fusing chains of operations
Mixing random and exhaustive testing
Filtering and mapping at the same time