[GHC] #13855: Syntactic sugar to write the recursion in GHC

GHC ghc-devs at haskell.org
Wed Jun 21 10:33:03 UTC 2017


#13855: Syntactic sugar to write the recursion in GHC
-------------------------------------+-------------------------------------
           Reporter:  vanto          |             Owner:  (none)
               Type:  feature        |            Status:  new
  request                            |
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.2
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 The recursion is defined by two case that are a base case and a recursive
 case.\\
 Instead of writing two functions to describe the recursion, I propose to
 write a single function that makes both.\\

 {{{<op>}}} should be set to tell the compiler how to compile the
 function.\\

 syntaxe :
 {{{
 exp = <base_case_exp1;...;base_case_expn> <op>
 <recursive_case_exp1;...;recursive_case_expn>
 <recursive_case_guards>
 }}}
 examples:

 {{{
 fac :: Int -> Int
 fac n = 0 = 1 <op> n * fac (n-1)
 }}}


 {{{
 product :: Num a => [a] -> a
 product (n:ns) = [] = 1 <op> n * product ns
 }}}


 {{{
 reverse :: [a] -> [a]
 reverse (x:xs) = [] = [] <op> reverse xs ++ [x]
 }}}


 {{{
 insert :: Ord a => a -> [a] -> [a]
 insert x (y:ys) = x [] = [x] <op> | x <= y = x:y:ys
                                   | otherwise = y:insert x ys
 }}}


 {{{
 drop :: Int -> [a] -> [a]
 drop n (_:xs) = 0 xs = xs; _ [] = [] <op> drop (n-1) xs
 }}}


 {{{
 fib :: Int -> Int
 fib n = 0 = 0; 1 = 1 <op> fib (n-2) + fib (n-1)
 }}}

 If someone is interested in this, I encourage him to write a proposal. I
 don't know how to do it.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13855>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list