diff options
author | Silvan Mosberger <infinisil@icloud.com> | 2019-09-03 07:32:44 +0200 |
---|---|---|
committer | Silvan Mosberger <infinisil@icloud.com> | 2019-09-03 07:32:44 +0200 |
commit | e4ea3e03066a760c8cd462108af99aebaaa44c1b (patch) | |
tree | b6e4c3570bc935685dac5dea32645d12db63767f /doc/manual/expressions | |
parent | 84de8210040580ce7189332b43038d52c56a9689 (diff) |
docs: Note that tryEval doesn't do deep evaluation
Diffstat (limited to 'doc/manual/expressions')
-rw-r--r-- | doc/manual/expressions/builtins.xml | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml index 4c1d618e9..f73d2e1ae 100644 --- a/doc/manual/expressions/builtins.xml +++ b/doc/manual/expressions/builtins.xml @@ -1607,12 +1607,18 @@ stdenv.mkDerivation (rec { <term><function>builtins.tryEval</function> <replaceable>e</replaceable></term> - <listitem><para>Try to evaluate <replaceable>e</replaceable>. + <listitem><para>Try to shallowly evaluate <replaceable>e</replaceable>. Return a set containing the attributes <literal>success</literal> (<literal>true</literal> if <replaceable>e</replaceable> evaluated successfully, <literal>false</literal> if an error was thrown) and <literal>value</literal>, equalling <replaceable>e</replaceable> - if successful and <literal>false</literal> otherwise. + if successful and <literal>false</literal> otherwise. Note that this + doesn't evaluate <replaceable>e</replaceable> deeply, so + <literal>let e = { x = throw ""; }; in (builtins.tryEval e).success + </literal> will be <literal>true</literal>. Using <literal>builtins.deepSeq + </literal> one can get the expected result: <literal>let e = { x = throw ""; + }; in (builtins.tryEval (builtins.deepSeq e e)).success</literal> will be + <literal>false</literal>. </para></listitem> </varlistentry> |