読者です 読者をやめる 読者になる 読者になる

ジョセフの日記

Haskellのこととか日常のこととか

竹内関数の可視化(WIP)

Haskell

遅延評価をあまり良く知らないのですが、Haskellはその遅延評価という性質のために竹内関数という次で定義される関数を単純なコードで高速に解けるらしいです。(竹内関数 - Wikipedia)

f:id:josephbake:20170125180634p:plain

Haskell再帰的な関数も簡単に扱えるので、なるほど確かに定義そのままを書くだけで高速であるだろうプログラムが書けました。比較対象はないので遅くはないだろう、程度ですが。

そして下のリンクに貼らせていただいた方は、なんとこの竹内関数の引数の挙動を音楽にするというプログラムを書いていました。非常にすごいです。こんなに音楽らしくなるのかと感心してしまいました。

d.hatena.ne.jp

最近はGlossの勉強もしていますし、引数は3つ。カラーコードも引数が3つです。じゃあ可視化してみようかな。そんな感じで書いてみました。竹内関数の引数を扱おうとなると、膨大なデータ量になってしまいどのようにデータ処理をしようか考えてみたところ、それならある長さまでの引数の三つ組を要素に持つリスト作ればいいじゃんと思いつきました。

できたのは良いのですが、正直出来たのかどうかが判別がし難いです。暫定版としてアップしておいて、これが正解であるわけではないということを断っておきます。後々、またこれの修正版を書こうと思います。

上でも書きました通り、使用パッケージはGlossです。

続きを読むからどうぞ。

 せっかく作ったのですが、動画はあまりにも色の変化が激しくチカチカするので健康のため載せないことにしました。もし見てみたい人は自己責任でrunさせてください。