GithubHelp home page GithubHelp logo

Typos about liquidhaskell-tutorial HOT 4 CLOSED

ucsd-progsys avatar ucsd-progsys commented on July 3, 2024
Typos

from liquidhaskell-tutorial.

Comments (4)

ranjitjhala avatar ranjitjhala commented on July 3, 2024

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.

ethanfrey avatar ethanfrey commented on July 3, 2024

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.

ranjitjhala avatar ranjitjhala commented on July 3, 2024

from liquidhaskell-tutorial.

ranjitjhala avatar ranjitjhala commented on July 3, 2024

Fixed by cfaae93

from liquidhaskell-tutorial.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.