なぜ関数型言語を使うのか
public.icon
The recording for the event in which I talked about my tool development and my thought on creative coding has been published.
言葉の壁本当にしんどくて毎回ガチ凹みするんだけど、なんというかこういうんをデジタルタトゥーとして残して置くことで変な意味で救われる人もわりにいる気がする。自分も好きなディレクターが映画祭のQAでしどろもどろに話してるの聞いては励みにしてたし。だから、別に何をディスるわけでもないけど、こういうのは「お呼ばれしてサラッとやってきましたよ」とかカッコつけて告知するだけでなしに、ちゃんと誰にも見れる形で報告していこうと思った。色々悲しすぎて毎晩チュートリアルをシャドウイングしてる(このモチベーションがいつまで続くか)
https://gyazo.com/c547cb7dc39b9c747bc723dd05b2d87d
上記のようなことを動機とした場合に、データとそれに対する処理を同等に扱える抽象モデルとか、ラムダ計算的なこととか言語構造と視覚表現に必然的な繋がりがあって、それと恣意性や身体性みたいなことが絡んでくるみたいな世界観だとこれはすごいなあと思って、期待して聞いていました。
動的に生成されるオブジェクトをデータ的に扱うのに向いている
関数型は「手順の連なり」ではなく「そのものの定義」として記述できるから 単にコードの表現方法をテキストの代わりにグラフィカルにするのではなく、かといって多くの(関数オブジェクトをフローとして扱えない)ノードベースUIのように第一級関数を犠牲にすることもなく、コードそのものをデザインデータのファイルフォーマットとしても扱えるようにするにはどういう言語設計が向いてるのか考えてるところです。
その辺最近Haskellにかなりインスパイアされてるという話をしようとしてました…。 Lispは特に関数型言語とは言えないですが、S式というシンタックスから構文木の階層構造が自明なので、GUIへのバインドが自然に出来るという魅力はあります。JSONやMessagePackのようなフォーマットにダンプしやすいというのもありますし。 人の思考との接続という意味では、プログラムをラムダ計算よりは、チューリングマシンのような「状態に対する破壊的操作の連続」と捉える方が自然だったりするのですが(だから副作用などのデメリットを差し置いても高級言語の分野でもJS, Pythonのような非純粋な言語が普及しているのだと思います)、グラフィックや視覚表現に関しては、コードから逐次実行の概念を取り去って、「それを描くための手順」を記述するより「それが何なのか」をグラフィカルに書き下せる方が実は直感的なんでないかなと考えています。(むっちゃ長いので適当にLikeするで結構っす