-
Notifications
You must be signed in to change notification settings - Fork 842
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
First class support for Liquid Haskell? #2641
Comments
@mgsloan this is an exciting idea, thanks for suggesting it! There are two modes I think we'd want to support.
In both cases, I think the main support we'd want from stack is to ensure a version of LiquidHaskell is used that is compatible with the selected GHC. Specifically we want to ensure that LiquidHaskell was built with the same GHC that we're using to build the project. So perhaps a |
That's correct Eric!
Makes sense! I suppose we can directly use the
This is not directly within the scope of The real awesome-sauce would be to compile liquid haskell directly into |
Hmm, integration with intero is also a very cool idea, and could avoid some of the overhead from having multiple GHC's typecheck the source (one for GHC itself, and one for GHC via LH). I think running |
Thanks for the suggestion @mgsloan! One thing to keep in mind when you are using Liquid Haskell in a big library is that verification time can be long. I did integrate Liquid Haskell verification in a real project (~73 modules) and I just added a command "runLiquidAll" in the Travis CI built. That ended up taking ~80 min that does not fit well in software building process. Now, if there is a |
Yep! I think it makes a lot of sense to turn intero into something that provides a shared GHC context for all the tools that need it. haskell-ide-engine has a similar goal and approach. We are taking the approach of extending GHCI, rather than starting fresh, because this is the easiest way to do it while retaining REPL capability.
Good to know, @nikivazou ! It certainly makes sense to me to have it as a CI step. That way, most contributors do not need to run liquid haskell. Instead, there will be an async notification if they broke some property. |
@nikivazou Could you share your |
I am using stack test for Travis integration. Check out this template:
https://github.com/nikivazou/theorem-proving-template
…On Mon, Mar 5, 2018 at 2:12 PM, Dmitry Kovanikov ***@***.***> wrote:
@nikivazou <https://github.com/nikivazou> Could you share your
runLiquidAll command? I'm trying to configure LiquidHaskell on Travis CI
and this is not an easy task...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2641 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AArotaU7m69DEc8mGUT6VtymbnRwH-d9ks5tbY4xgaJpZM4KHQp4>
.
--
Niki Vazou
|
Should we add first class support for Liquid Haskell in stack? I have not used Liquid Haskell much yet, so I don't know how much sense this makes. It could be as simple as
stack liquid
, and it will automatically install it appropriately if necessary, and run the tool on your code. I will send an email to the Liquid Haskell authors and get them involved in this discussion.It is quite possible that first class support is unnecessary. I just found this project - https://github.com/spinda/liquidhaskell-cabal/blob/0.1.1.0/README.md - but I have not yet tried it, sounds like it supports stack decently. Perhaps it would be helpful to streamline things for usage with stack?
In mgsloan/store#71 , @kantp added use of liquid haskell to verify that we stay within the bounds of the bytebuffer! This allows us to have code that is both fast and trustworthy. Fantastic!
Considering we are now maintaining code that uses Liquid Haskell, it only makes sense to have our Travis CI for
store
use it. To me, the most sensible implementation approach is by having direct support in stack.The text was updated successfully, but these errors were encountered: