私は Haskell (特に Yampa) で Arrowized FRP ライブラリをいじっていますが、「継続的な」切り替えを行う方法がよくわかりません。sf
つまり、信号は、それ自体が信号である信号関数 (以下) を通過することを意味します (画像の上半分に描かれているように)。
スイッチのパラメータがどうなるか前もってわからないので、これを単純なバイナリ スイッチに減らす方法がわかりません。
可能であれば、どのようにすればよいのでしょうか。私は Yampa コードの方が好きですが、Arrowized FRP コードであれば何でも構いません。これらの場合に同じ混乱が生じるかどうかを知るために、他のライブラリ(SodiumやReactive Bananaなど)を試したことはありませんが、それらについても興味があります.
編集
これをより明確にするために、画像にラベルを付けました。ラベルの可能なタイプは次のとおりです。
で:
Either Int (Int -> Int)
1 :
(Int -> Int) -> (Either Int (Int -> Int) -> (Int -> Int))
sf は次のようになります。
(Either Int (Int -> Int) -> (Int -> Int)) -> Either Int (Int -> Int) -> (Int -> Int)
(例: app
)。ただし、それは疑問符の付いた部分が への入力を表している場合のみですsf
。より複雑なスイッチを表す場合、タイプは次のようになります。
(Either Int (Int -> Int) -> (Int -> Int)) -> (Int -> Int)
代わりは。
- 2とoutはほとんど無関係です。
に適用される関数を表すラベルの付いた信号を使用し、それ自体がsへの引数と s 自体の両方のソースであることで、回路がであるか のように動作するようにするという考えです。入力を処理し、それらの入力に基づいてその動作 (それを構成する信号関数) を動的に変更できる回路を取得したいと考えています。sf
app
f
in
in
f
f
一方では、この場合には;がないsf
ので、実際には ではないように思えます。しかし一方で、何らかの洗練された切り替えで同じ動作を実現できると思います。app
ArrowApply