
succ' in Li-yao's message is meant to be pred, I guess.
--
Best, Artem
On Sun, 28 Apr 2019, 8:01 am Li-yao Xia,
Hi Georgi,
That sounds like a use case for pattern synonyms. As its name suggests, it allows you to give constructor names to patterns. This is quite powerful when combined with view patterns, which allow patterns to use arbitrary logic.
User Guide on pattern synonyms:
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts...
pattern Z :: Integer pattern Z = 0
pattern S :: Integer -> Integer pattern S n <- (succ' -> Just n) where S n = n + 1
succ' :: Integer -> Maybe Integer succ' n | n > 0 = Just (n - 1) | otherwise = Nothing
Cheers, Li-yao
Hey,
Is there any way to do something similar to what Agda does with natural numbers via BUILTIN pragmas? More precisely I want to have correct-by-construction natural numbers,
On 4/28/19 5:38 AM, Georgi Lyubenov wrote: that
at runtime are treated as `Integer`s. My initial idea was to abuse rewrite rules to turn `data N = Z | S N` into `Integer` terms somehow, but I'm not sure if this is possible.
======= Georgi
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.