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

Samuel samuelrivas at gmail.com
Mon May 9 16:36:30 CEST 2016


Oh, I see. So foo ? quux evaluates to foo ? "quux". Seems a bit
confusing, but everything is clear now :)

Thanks

On 9 May 2016 at 15:52, Guillaume Maudoux (Layus) <layus.on at gmail.com> wrote:
> 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"
>>
>
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev



-- 
Samuel


More information about the nix-dev mailing list