ucsd-progsys/liquidhaskell

Question about Dependent Sums

Open

#1,615 opened on Feb 14, 2020

View on GitHub
 (9 comments) (0 reactions) (0 assignees)Haskell (157 forks)batch import
errormsggood first issue

Repository metrics

Stars
 (1,306 stars)
PR merge metrics
 (Avg merge 2d 18h) (12 merged PRs in 30d)

Description

Hi, I'm trying to represent a function that returns a dependent sum like below

{-@ measure isLeft :: Either a b -> Bool @-}
isLeft (Left _) = True
isLeft (Right _) = False

{-@ example :: x:Int -> {v : Either Int String | (isLeft v && x > 0) || (not (isLeft v) && x <= 0)} @-}
example x =
    if x <= 0 then Right "hello" else Left 1

but am running into issues with liquid. Am I representing this correctly? Even without generics, this still doesn't seem to work in the way I might expect.

Contributor guide