| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Nix.Path
- data Path
- path :: Iso' Path [Identifier]
Documentation
Paths are non-empty lists of identifiers in Nix.
>>>path # [ident # "yo"]Path [Identifier "yo"]
Any attempt to construct the empty path throws an error:
>>>:set -XScopedTypeVariables>>>either (\(_::SomeException) -> "empty paths are illegal") show <$> try (evaluate (path # []))"empty paths are illegal"
Paths can be pretty-printed and parsed with the Text class:
>>>simpleParse "foo.\"foo.bar\".bar" :: Maybe PathJust (Path [Identifier "foo",Identifier "foo.bar",Identifier "bar"])>>>maybe empty disp (simpleParse "foo.\"foo\".\"bar\".bar" :: Maybe Path)foo.foo.bar.bar
\p -> Just (p :: Path) == simpleParse (display p)
Paths are instances of strings and can be implicitly converted:
>>>:set -XOverloadedStrings>>>disp $ ("yo.bar" :: Path)yo.bar>>>disp $ (" yo . bar " :: Path)yo.bar
Freaky quoted identifiers are fine throughout:
>>>disp $ path # ["yo","b\"ar"]yo."b\"ar">>>disp ("\"5ident\"" :: Path)"5ident">>>disp $ path # ["5ident","foo.bar","foo\nbar"]"5ident"."foo.bar"."foo\nbar"
path :: Iso' Path [Identifier] Source
Use this isomorphism to construct a path from a list of identifiers, or to access that list for a given path.