From 77334757d7e3908b247bd3072d38d5d025f20e3a Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 14 May 2026 19:28:43 -0400 Subject: [PATCH 1/2] lib.isFunction: save an attribute lookup --- lib/trivial.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/trivial.nix b/lib/trivial.nix index fcd9a8791dcf..9a7305d500e1 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -1123,7 +1123,11 @@ in isFunction : Any -> Bool ``` */ - isFunction = f: builtins.isFunction f || (f ? __functor && isFunction (f.__functor f)); + isFunction = + let + isFunction = builtins.isFunction; + in + f: isFunction f || (f ? __functor && isFunction (f.__functor f)); /** `mirrorFunctionArgs f g` creates a new function `g'` with the same behavior as `g` (`g' x == g x`) From bb71feaec136824966ae51c5007d11ae2b544c57 Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 14 May 2026 19:29:25 -0400 Subject: [PATCH 2/2] lib.functionArgs: save a function call on every lookup --- lib/trivial.nix | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/trivial.nix b/lib/trivial.nix index 9a7305d500e1..fd48a0456b66 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -1101,11 +1101,10 @@ in ``` */ functionArgs = - f: - if f ? __functor then - f.__functionArgs or (functionArgs (f.__functor f)) - else - builtins.functionArgs f; + let + functionArgs = builtins.functionArgs; + in + f: if f ? __functor then f.__functionArgs or (functionArgs (f.__functor f)) else functionArgs f; /** Check whether something is a function or something