[Proposal] add view function for NPlusKPatterns
Stijn van Drongelen
rhymoid at gmail.com
Mon Sep 30 14:37:44 UTC 2013
Hello,
I'm working on a desugaring library for Haskell. Desugaring NPlusKPatterns
currently takes up the most code, since a proper translation involves
generating two guards. Meanwhile, most other pattern-related language
extensions are defined in terms of ViewPatterns, which are trivial to
desugar.
In my laziness to fix this otherwise, I propose that the following function
is added to the Prelude:
> maySubtractIntegral :: Integral a => a -> a -> Maybe a
> maySubtractIntegral k nplusk = if n >= 0 then Just n else Nothing
> where
> n = nplusk - k
So that `NPlusKPatterns` like
< func (n+42) = expr
may be desugared to
< func (maySubtractIntegral 42 -> Just n) = expr
rather than
< func nplusk | n <- nplusk - 42, n >= 0 = expr
The name of this function is, of course, subject to bikeshedding. Note that
the signature is correct; though (Ord a, Num a) is more general, it's too
weak for the semantics of the language extension.
Discussion period: 2 weeks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20130930/4ad51796/attachment.html>
More information about the Libraries
mailing list