这两种方法在覆盖函数时是一样的吗?

Are these two ways the same for overriding a function?

提问人:Tim 提问时间:11/12/2023 更新时间:11/12/2023 访问量:35

问:

https://nixos.org/guides/nix-pills/override-design-pattern#id1431 提供了一种覆盖函数的方法:f

rec {
  makeOverridable = f: origArgs:
    let
      origRes = f origArgs;
    in
      origRes // { override = newArgs: makeOverridable f (origArgs // newArgs); };
}

是不是和:

rec {
  makeOverridable = f: origArgs:
    let
      origRes = f origArgs;
    in
      origRes // { override = makeOverridable (newArgs: f (origArgs // newArgs)); };
}

?

特别是,是

newArgs: makeOverridable f (origArgs // newArgs)

makeOverridable (newArgs: f (origArgs // newArgs))

一样?

它们和

makeOverridable (makeOverridable f)

?

递归 函数编程 NIX Nixos

评论


答: 暂无答案