xlibs
Graphviz と同じスコープにありますがlibXaw
、セット内にあるため、そうではありませんxlibs
。したがって、graphviz 関数に引数として渡すことができるようにするには、明示的にする必要がありますinherit (xlibs) libXaw
。inherit
括弧で示される動作は、キーワードに固有のものです。
の括弧は(import ../tools/graphics/graphviz)
、評価の順序を示すための一般的な規則です。import
単一の引数を受け入れる関数ですpath
。のファイルに../tools/graphics/graphviz
は、一連の属性を引数として受け入れる関数が 1 つ含まれています。したがって、括弧は、評価の順序が (1) 関数をインポートしてからpath
、(2) その関数に設定された属性を適用する必要が{...}
あることを示しています。
編集: @danbst は、この場合、角かっこは必要ないことを指摘しました
import ../tools/graphics/graphviz
。これは、 evaluate
import ../tools/graphics/graphviz
が set で呼び出される関数を返すためです
{ ... }
。
typesOfArgs = one: two: with builtins; "${typeOf one} and ${typeOf two}"
括弧の必要性は、文字列を返すこの関数の引数と同じ値を使用することで実証できます。typesOfArgs (import ../tools/graphics/graphviz) { }
に評価され"lambda and set"
ますが、インタープリターが評価する括弧なしで、typesOfArgs import ../tools/graphics/graphviz
その文字列を引数を"lambda and path"
持つ関数として呼び出そうとします。{ }
error: attempt to call something which is not a function but a string
import
角かっこがないと、インタープリターは、2 つの引数path
とを指定して関数を呼び出したいと想定し{ ... }
、エラーになります。