3

ここでは、ポイント1に次のように書かれています。

このファイルは一連の属性を定義します。これらはすべて具体的な派生物です (つまり、関数ではありません)。実際、相互に再帰的な属性のセットを定義します。つまり、属性は相互に参照できます。さまざまなパッケージを相互に「プラグイン」したいので、これはまさに私たちが望んでいることです。

これはちょっとわかりにくそうです。

たとえば、derivation A依存しderivation Bderivation B依存している場合derivation A、そのような相互に再帰的な派生のペアは、Nix/NixOS でどのように構築されますか?

このような相互に再帰的な導出が問題にならない理由とその方法について、簡単な例を教えてください。

4

2 に答える 2

6

A が B に依存し、その逆の場合、それは循環依存であり、Nix はそれを処理できません。

しかし、相互に再帰的なセットは別のものです。これは、A が同じセットの B に依存できることを意味します。

rec {
  a = 1;
  b = 2;
  c = a+b;
}

jhegedus が述べたように、(怠惰のため) と同等です。

let s = with s; {
  a = 1;
  b = 2;
  c = a+b;
};
in s

しかし、これはサイクルであり、機能しません:

rec {
  a = b;
  b = a;
}
于 2015-07-15T12:56:31.113 に答える