What is the idiomatic way to write the equivalent of an algebraic data type in Crystal? E.g. In Haskell I might have
data Stage = StageInitial String | StageFinished String
So I want to have two stages, each which has a string payload. Later on I want to pattern match on the stage.
How would you write this in Crystal?