id:nobsunさんの簡単移調ツールを読んでみます (5)

上の続きです。最終回です。
簡単移調ツール - HaHaHa!(old) - haskellより引用。
さていよいよ関数mappingsを読んでいきます。
関数mappingsでは、与えられた引数の差分をとって(関数diff)、その差分だけ関数note'をずらして(関数dropWith)、関数noteと組み合わせて返しています。関数diffの出力は、要素の個数が0個から11個のリストになっています。
関数note'では、関数cycleが上手く使われています。関数note'をこんな感じで出力させてみると、

main = print $ take 20 notes'

以下のようになります。指定したリストをぐるぐる繰り返す循環リストになっています。

[C ,C#,D ,Eb,E ,F ,F#,G ,G#,A ,Bb,B ,C ,C#,D ,Eb,E ,F ,F#,G ]