マウスやキーボードに限らず、あらゆるユーザー入力をアプリ上の任意のコントロールにアサインしたい。タブレットの筆圧、MIDIコン、ゲームパッド、はたまたLeap Motionまで。
いわば、DAW(音楽制作アプリ)やVJソフトのような操作感をイメージしています。
0-127
という値を 0-100%
に再割当てする0.0-1.0
の範囲をとるfloat型スライダーを value >= 0.5
という条件式で boolに変換(VDMXの例)
こうしたアサインの仕組みを、関数型言語におけるモナドを用いて上手に抽象化してあげられないか考えてみます。ちなみに、僕はモナドを雰囲気でしか理解できていません。
モナドは僕にも説明が難しいので(≒ しゃんと分かってない)、Haskellなどのコードを持ち出すことなく、無理やりTypeScriptだけで説明しきってみます。
ユーザー入力を扱うイベント・ドリブン型のコードというと、こういうイディオムが見慣れているかもしれません。
objectToWatch.addEventListener('eventname', event => {
// ...
})