Hello,

> On Apr 30, 2015, at 4:45 PM, Terrance Kennedy <terrancerkenn...@gmail.com> 
> wrote:
> 
> Hi,
> 
> I'm working on a Python project to convert Python built-in types to Nix 
> built-in types and it raised some quesions on the limitations of built-in Nix 
> types. I've been able to gather some information using nix-repl and reading 
> the Nix expression parser code, but am not sure on the following:
> 
> - Integer: Appear to be either 32 or 64 bit signed integer depending on the 
> underlying architecture. Is this correct?

Integers are mapped to the C++ long type [1].

> - String: From what I can tell, since Nix strings are based on C++ 
> std::string, they don't enforce or expect any kind of encoding. Is it 
> recommended or tested to put non-ASCII data (in any encoding) into a Nix 
> string? What about binary data?

Strings are stored as null-terminated char arrays[2]*. Any char besides 0 can 
safely be stored in them, but if you try to display them they will be treated as
ASCII.

> - Path: Are there any disallowed characters in a Nix path? How can one 
> represent paths with whitespace?
> 

Path literals are determined by [3], but you can append a string to a path, so
e.g. (./. + "/filename with spaces.txt") will result in a path with spaces in
the name.

> Cheers,
> - Terrance
> _______________________________________________
> nix-dev mailing list
> nix-dev@lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev

* They also have associated context, which is irrelevant for the purposes of 
this
  question.
[1]: https://github.com/NixOS/nix/blob/1.8/src/libexpr/value.hh#L38
[2]: https://github.com/NixOS/nix/blob/1.8/src/libexpr/value.hh#L115
[3]: https://github.com/NixOS/nix/blob/1.8/src/libexpr/lexer.l#L82
_______________________________________________
nix-dev mailing list
nix-dev@lists.science.uu.nl
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to