<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>I would like to second this thought. Using Haskell for package descriptions needs to be thought out and executed with great care and attention. It's really easy to go off the rails.<br></div>
<div><br></div>
<div>Scala's build system lets you do very powerful things, but it also makes things unnecessarily complicated and mystifying for beginners. At my previous work where we used Scala extensively, there were many times where the team simply resorted to external tools because figuring out how to make some seemingly trivial change to an SBT module was too time consuming.<br></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div defang_data-gmailquote="yes"><div>On September 16, 2016 8:39:15 AM EDT, David McBride <toad3k@gmail.com> wrote:<br></div>
<blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204, 204, 204);padding-left:1ex;" defang_data-gmailquote="yes"><div dir="ltr"><div><div>While I would personally love having a package description in haskell, I don't think it is a good idea.<br></div>
<div><br></div>
<div>If you can't start or modify a package without already knowing haskell, it is a huge barrier to entry.  I remember trying to get started in scala and having a lot of trouble with sbt because I didn't know their operators for lists and arrays or hash tables or whatever it is that they use in their files.<br></div>
</div>
</div>
<div><div><br></div>
<div defang_data-gmailquote="yes"><div>On Fri, Sep 16, 2016 at 4:57 AM, yogsototh <span dir="ltr"><<a href="mailto:yann.esposito@gmail.com">yann.esposito@gmail.com</a>></span> wrote:<br></div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex;" defang_data-gmailquote="yes"><div dir="ltr"><div><span><br><blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex;" defang_data-gmailquote="yes"><div dir="ltr">I guess the overriding question I have here is: what is the PROBLEM being solved?<br></div>
</blockquote><div><br></div>
</span></div>
<div>Let me share my experience with Clojure and lein. They use a clojure hash-map for their configuration. So yes arbitrary code could be executed and I believe this is a _very good thing_.<br></div>
<div><br></div>
<div>Why? Because it makes it very easy to add sub-configuration that can be used by third party plugin. For example:<br></div>
<div><br></div>
<div>- a plugin that help the use of environment variables (lein-environ) which is really helpful for application development (not so much for library development)<br></div>
<div>- a plugin that use S3 for our private dependencies (not supported by default by lein)<br></div>
<div><br></div>
<div><br></div>
<div>For deployment: we were able to add request to our API server that provide not only the written version but also the git commit hash. So we could be certain of the version of the server. Too much time there were sys/admin deployment errors. And that could only be achieved because we were able to run arbitrary command in the project description file.<br></div>
<div><br></div>
<div>I certainly forget many other advantages of having a package description format which is simply a data structure in the hosted language. But this has by far my preference.<br></div>
<div><br></div>
<div>- cabal is ok, but very imperfect, I generally need to have a lot of copy/paste, I need to change it very often while writing application with many dependencies<br></div>
<div>- JSON/YAML/TOML are simply not powerful enough to match all semantics we might need to configure a project. For example we might want to have Set instead of List for some properties. Or I don't know maybe ternary tree structures.<br></div>
<div><br></div>
<div>The point is: we pay a price by adding a step between the semantic and the syntax.<br></div>
<div>While if our configuration format was in Haskell we could express the semantic more directly.<br></div>
</div>
<div><br></div>
<div>______________________________<wbr>_________________<br></div>
<div> Haskell-Cafe mailing list<br></div>
<div> To (un)subscribe, modify options or view archives go to:<br></div>
<div> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br></div>
<div> Only members subscribed via the mailman list are allowed to post.<br></div>
</blockquote></div>
</div>
<p style="margin-top:2.5em;margin-bottom:1em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(0, 0, 0);"><br></p><pre><div><hr><br></div>
<div>Haskell-Cafe mailing list<br></div>
<div>To (un)subscribe, modify options or view archives go to:<br></div>
<div><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br></div>
<div>Only members subscribed via the mailman list are allowed to post.<br></div>
</pre></blockquote></div>
<div><br></div>
</body>
</html>