[Nix-dev] confused using the <obj> ? <string> operator with non literal operators

Guillaume Maudoux (Layus) layus.on at gmail.com
Mon May 9 15:52:15 CEST 2016


You are missing the only command that could enlighten you :

> foo ? bar
true

The second operant is taken as a string literal, that's why you need to
evaluate variables there.
The following also works :

> foo ? ${quux}
true

-- Layus.

Le 09/05/16 à 15:25, Samuel a écrit :
> Am I holding some false assumption here? It seems the ? operator has
> different behaviour depending on how the right hand side is evaluated:
>
> nix-repl> foo = { bar = "baz"; }
>
> nix-repl> quux = "bar"
>
> nix-repl> foo ? "bar"
> true
>
> nix-repl> foo ? quux
> false
>
> nix-repl> foo ? "${quux}"
> true
>
> nix-repl> quux == "${quux}"
> true
>
> nix-repl> builtins.typeOf quux
> "string"
>



More information about the nix-dev mailing list