Haskell Advent Calendar 13日目の記事です。 ごきげんよう。 今年も音楽の冬がやってまいりました。Haskellより音楽のほうに力を注いでいる気がするこの頃ですが、ふとこう思いました――「Haskellでシンセサイザーを作たらとても楽しいのではないか?」 シンセサイザーの仕組みは、たとえばFM・減算式ならこうなります: しかし、これが実装出来てもあまり嬉しくない、というのはわかっていただけるのではないでしょうか――そう、ただのシンセサイザーではなくどんなシンセサイザーでも作れるフレームワークが欲しいのです。 部品を作る部品 -Artery- まず、私は、部品同士を「配線」できるようにするため、arteryというパッケージを作りました。 ArteryはArrowとしてのインターフェイスを持っています。Arrowはごく簡単に表現すると、以下のようなクラスで表現されます(
![Haskell Advent Calendar 13日目: シンセサイザーで理解するArrowプログラミング - モナドとわたしとコモナド](https://cdn-ak-scissors.b.st-hatena.com/image/square/a77c2db039e832b4ad337cbe94d340861c843177/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ff%2Ffumiexcel%2F20131214%2F20131214173624.png)