An ADT in Snap! is just a set of blocks that together create an abstraction by hiding the details of how some related pieces of data are stored.
Constructor

Selectors





Constructor

Selectors





Constructor

Selectors






Now use the abstraction to create a new block




This is not horrendous but it requires more decoding to understand.
It also has a bug. Can you see it?
Here’s a block with the same bug but written using our ADT.

Easier, right?
Write a constructor that takes separate pieces of data as inputs and puts them in a list.
Write selectors that take a single input and extract the appropriate of the items from the list.
Obviously constructors and selectors have to agree on where each piece of data is put in the list.
But no other code should have to care about that.