Skip to content

mrkkrp/liaison

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Liaison

License BSD3 Hackage Stackage Nightly Stackage LTS Build Status

Nix sat in the corner of the bar in her usual state of indifference. And then he came in. Haskell. There was something special about this guy. The smell of cheap tobacco mixed with Chanel egoïste reminded her of her forgotten desires. Desires, which stayed rather unsatisfied with C plus plus.

C plus plus… She still remembered him, young and immature, back then she used to call him just C. Then C plus. The second plus didn't help either. Sometimes it's just not what a girl wants. But with Haskell it was different. From the first sight she understood that this guy didn't need no pluses, for he himself was the infinite multiplier…

Liaison is a package that allows us to use a subset of Nix language as general-purpose configuration language. The project so far is just a playground, I do not expect that people will use it in its current state.

Get started

  • Specification of the language can be found here.
  • Roadmap can be found here.
  • See Haddocks for info about how to use this in Haskell programs.

Motivation

What we want for writing configuration is something like JSON or YAML, but with lambdas, and that's exactly what Nix is. In addition to that, subset of Nix should be more portable as a language than e.g. YAML.

But hey, there is…

  • hnix, but its scope is wider because it aims to re-implement Nix in its entirety. liaison is simpler and specifically written to work as a configuration language. For example, we provide a validation framework, special set of combinators to generate configuration files, etc.

  • dhall, which has too powerful type system, and is very slow. The promise of termination does not give anything from practical point of view, because it's possible to write functions that will eventually terminate, but not in our lifetimes. liaison aims to be fast and simple to use. Its dynamic nature is compensated by excelent error messages.

Contribution

Issues, bugs, and questions may be reported in the GitHub issue tracker for this project.

Pull requests are also welcome and will be reviewed quickly.

License

Copyright © 2019 Mark Karpov

Distributed under BSD 3 clause license.

Releases

No releases published

Packages

No packages published