Comments (4)
Thanks @ethanfrey, will fix those links!
The last one is a glitch in our pretty printer;
it should say forall t1 t2
instead of forall t t
but there is actually a subtle bug in your code
that is being pointed out.
The error says that the Liquid type is different
from the GHC inferred type (when you don't put
in the type annotation.)
To see why, suppose this is the file (no type annotations.)
mergeSort [] = []
mergeSort xs = merge (mergeSort ys) (mergeSort zs)
where
(ys, zs) = halve mid xs
mid = length xs `div` 2
halve :: Int -> [a] -> ([a], [a])
halve = undefined
merge :: (Ord a) => [a] -> [a] -> [a]
merge = undefined
Now when you fire it up in GHC
rjhala@borscht ~> ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
λ> :l tmp.hs
[1 of 1] Compiling Main ( tmp.hs, interpreted )
Ok, modules loaded: Main.
λ> :t mergeSort
mergeSort :: Ord t1 => [t] -> [t1]
Aha. Notice that the input list of [t]
yields an output list of [t1]
...
pretty odd. Can you spot the issue in the mergeSort
code?
from liquidhaskell-tutorial.
Yeah, it never terminates....we split a list of one element, and it gives a [] and a list of one element, and then we split a list of one element....
Nice tip with ghci to check the sigs. I fixed the type signature to get liquid to run, then fixed the bug for the excercise. After your feedback, I realized that once the code was fixed, the type signature matched liquid as well.
I have to admit I am quite new to haskell and just going through the liquid haskell tutorial and find it a great introduction. Thank you all so much for this project.
from liquidhaskell-tutorial.
from liquidhaskell-tutorial.
Fixed by cfaae93
from liquidhaskell-tutorial.
Related Issues (20)
- Regarding reverse in Ch 8: Sets HOT 2
- How to workaround using Stack for building html HOT 7
- apparent typo in tutorial under "Testing Values: Booleans and Propositions"
- Can't even get started because of build issues HOT 5
- there is an extra ")" at the end of this line
- Numbering the exercises HOT 1
- Question about Chapter 5.3: delmin HOT 2
- Links to subsections don't work for me HOT 2
- Syntax of refinement types HOT 4
- Chapter 8 exercise "reverse" HOT 8
- Instructions for running LiquidHaskell HOT 2
- Figures 1.4 and 1.5 in Chapter 12
- Chapter 12 Exercise InsertRight HOT 4
- Current HEAD of main fails to build HOT 4
- Liquid Type Mismatch on Initial Build HOT 2
- Passing -fdefer-type-errors to GHC causes confusing errors from LH HOT 3
- Text description of "null" in Chapter 6 is reversed HOT 1
- Link is no longer available HOT 1
- Trouble with Chapter 11 HOT 3
- About Lemmas and other questions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from liquidhaskell-tutorial.