シグナルネットワークを定義するための宣言型言語を設計しています。ネットワーク内のノードのグループを表すために変数バインディングを使用したいと思います。これらの変数に対して実行したい「割り当て」には2つのタイプがあることに気付きました。
一方では、変数は信号演算子の特定のグループの出力を表す必要があります。この出力は、別の入力に接続できます。これは、さまざまな出力をさまざまな場所に送信するために重要です。たとえば、次のようになります。
a, b, c = (SignalA with three outputs)
(SignalB a)
(SignalC c)
(SignalD a)
この場合、3つの出力を持つSignalAがあり、1番目と3番目の出力はそれぞれSignalBとSignalCにリンクされ、SignalDもSignalAの最初の出力にリンクされます。SignalAのインスタンスは1つだけです。
一方、変数は信号操作の一般的なパターンを表す必要があります。これにより、一般的な構成を簡単に再現できます。
a = (SignalA (SignalB))
(SignalC a)
(SignalD a)
a
この場合、 SignalAとSignalBの構成を表現したいと思います。これは、SignalCとSignalDの入力として再現されます。ここにはSignalAの2つのインスタンスがあります。
だから私の質問は、機能的/宣言型プログラミングでは、これらの2つの割り当てセマンティクスに共通の用語がありますか?そして私の言語では、どちらが「=」を取得する必要があり、もう一方の一般的な演算子は何でしょうか?(おそらく:=?)
もちろん、各信号が純粋関数を表す場合、どちらも同じであることに気づきましたが、私の場合、信号の処理時に副作用が発生する可能性があるため、この2つの場合を区別する必要があります。