consults宣言
f:A→B consults S は、fがシステムコンポネントに対して問い合わせ(readアクセス)をするということ。これは、fがSをreadonlyモードで要求していることになる。Sがなければfは動かないが、Sへの書き込み(状態遷移操作)はしない。
Sへのreadonlyアクセスだけを許すってことは、Sのreadファセット(ファセットは制限された、あるいは少し改変されたインターフェース)だけを渡すってことだ。あるいは、writeアクセスを監視して、もしwriteすればfを処罰するようなことだろう。
圏論的には、fが、Sによる自明コモナドの余クライスリ射であることを宣言している。
readonlyアクセスがコモナド、writeonlyアクセスがモナドとすると、システムコンポネントのの2つのファセット(readファセットとwriteファセット)を使った、モナド/コモナド構造がシステムコンポネントの意味論になるのかな?