module Melody (Note(..),Melody(..),MelodyElement) where

import Pitch
import Duration 

type MelodyElement d p = (d,Note p)

data (Duration d, Pitch p) => Melody d p = Melody [MelodyElement d p]
                                         deriving (Show)
data (Pitch p) => Note p = Note p Int
                         | Rest
                           deriving (Eq,Show)

append::(Duration d, Pitch p) => Melody d p -> Melody d p -> Melody d p
append (Melody m1) (Melody m2) = Melody (m1++m2)