RiugaBachi / necrophagy

A type-level, statically-verified Haskell embedded domain specific language (EDSL) for writing guitar tablature.
BSD 3-Clause "New" or "Revised" License
24 stars 0 forks source link

Alternate syntax for Programs / Tunings #4

Closed RiugaBachi closed 4 years ago

RiugaBachi commented 4 years ago

The current notation of Instrument `Tuned` Tuning is not ideal, as we have 6/7/8/9 string guitars for which the same tuning names apply to, however the current design necessitates n*m tuning data structures suffixed with the string number, such as BStandard6.

I propose the alternate syntax:

Program @(7 `String` DistortionGuitar `Tuned` BStandard)

And subsequently, a Tuning type family indexed by string count and tuning name.

RiugaBachi commented 4 years ago

This has been implemented with a slight change of plans. Tunings are now simply parameterized over string count i.e. DistortionGuitar `Tuned` BStandard @7; the original proposed syntax was deemed too bulky and unergonomic.