Comments (7)
I've also tested my code on the online version, which caused the same issue. http://ucsd-progsys.github.io/liquidhaskell-tutorial/07-measure-int.html#/program-40
from liquidhaskell-tutorial.
from liquidhaskell-tutorial.
from liquidhaskell-tutorial.
Thank you for your response! I've just figured out a working example by defining pivApp
similar to http://goto.ucsd.edu/~gridaphobe/liquid/haskell/blog/blog/2013/07/29/putting-things-in-order.lhs/
https://github.com/SkyZH/introliquid.hs/blob/master/src/Ex06.hs#L150
from liquidhaskell-tutorial.
from liquidhaskell-tutorial.
I've missed your first reply...
-
use “Len” instead of “size” In the spec of “partition” does not help, because
ListN
is defined by size... -
tell LH that “Len” is the same as “size” by specifying that does not help.
{-@ measure size @-}
{-@ size :: xs:[a] -> {v:Nat | v = len xs} @-}
size :: [a] -> Int
size [] = 0
size (_:rs) = 1 + size rs
/Users/skyzh/Work/playground/src/Ex06.hs:157:5-17: Error: Liquid Type Mismatch
157 | l ++ [x] ++ r
^^^^^^^^^^^^^
Inferred type
VV : {v : [a##xo] | len v == len (Ex06.fst ?f) + len ?b
&& Ex06.size v >= 0
&& len v >= 0}
not a subtype of Required type
VV : {VV : [a##xo] | Ex06.size VV == Ex06.size ?e}
In Context
xs : {v : [a##xo] | Ex06.size v >= 0
&& len v >= 0}
?f : {?f : ([a##xo], [a##xo]) | Ex06.size (fst ?f) + Ex06.size (snd ?f) == Ex06.size xs
&& len (fst ?f) + len (snd ?f) == Ex06.size xs}
?c : {?c : [a##xo] | tail ?c == ?a
&& head ?c == x
&& (Ex06.notEmpty ?c <=> true)
&& Ex06.size ?c == 1 + Ex06.size ?a
&& len ?c == 1 + len ?a
&& Ex06.size ?c >= 0
&& len ?c >= 0}
?e : {?e : [a##xo] | Ex06.size ?e >= 0
&& len ?e >= 0}
?b : {?b : [a##xo] | len ?b == len ?c + len (Ex06.snd ?f)
&& Ex06.size ?b >= 0
&& len ?b >= 0}
x : a##xo
?a : {?a : [a##xo] | (Ex06.notEmpty ?a <=> false)
&& Ex06.size ?a == 0
&& len ?a == 0
&& Ex06.size ?a >= 0
&& len ?a >= 0}
- replace all
size
withlen
this is ok 💯, here's the working example https://github.com/SkyZH/introliquid.hs/blob/master/src/Ex06len.hs
from liquidhaskell-tutorial.
- tell LH that “Len” is the same as “size” by specifying that still does not help if I change the definition from the one in the previous comment into:
{-@ measure size @-}
- {-@ size :: xs::[a]-> {v:Nat | v = len xs} @-}
+ {-@ size :: xs:_ -> {v:Nat | v = len xs} @-}
size :: [a] -> Int
size [] = 0
size (_:rs) = 1 + size rs
which yields exactly the same error.
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.