[GHC] #14355: Improvement of lazy evaluation

GHC ghc-devs at haskell.org
Mon Oct 16 08:36:12 UTC 2017


#14355: Improvement of lazy evaluation
-------------------------------------+-------------------------------------
           Reporter:  vanto          |             Owner:  (none)
               Type:  feature        |            Status:  new
  request                            |
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.2.1
           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:
-------------------------------------+-------------------------------------
 Hello,
 consider the following example:\\

 {{{
 Prelude> let d = (\x y -> (+))
 Prelude> :t d
 d :: Num a => p1 -> p2 -> a -> a -> a

 }}}
 and calculating these expressions:\\
 example 1:\\

 {{{
 Prelude> d (/) ({-# LANGUAGE TypeNTypes #-}) 1 6

 Prelude> d ((\x y -> 1/0)2 3) (\x y -> 1/0) 6 3

 Prelude> d 1 2 3 4

 Prelude> d 'e' 'r' 5 6

 Prelude> d [1] [5] 1 1

 Prelude> d (1/0) (1/0) 1 0

 Prelude> d (1 `div` 0) 5 3 2

 Prelude> d (0/0) (0/0) 1 0

 Prelude> d undefined undefined 1 0

 Prelude> d True False 1 2

 Prelude> d otherwise otherwise 4 3

 Prelude> d maybe maybe 8 9

 Prelude> d Nothing Nothing 0 7

 Prelude> d EQ EQ 4 5

 Prelude> d (+) (+) 0 9

 Prelude> d error error 1 2

 Prelude> d interact interact 1 3

 Prelude> d min max 6 4

 Prelude> d (:) (:) 7 3

 Prelude> d foldl foldr 1 7
 }}}
 and this:\\
 example 2:\\

 {{{
 Prelude> d _ _ 1 2

 Prelude> d a z 3 5

 Prelude> d (\x -> (*/*)) (\x -> (*/*)) 2 7

 Prelude> d (otherwise/otherwise) 2 6 4
 }}}
 and this:\\
 example 3:

 {{{
 Prelude> d (/) ({-# #-}) 1 6
 }}}
 Are the results correct? Yes.
 Is this consistent with common sense? No. Here again, it does not make
 sense. No comment, I hope this is clear to everyone.\\
 Example 2 should provide a result as an example 1. it makes sense.\\
 See example 3. A result with warning. you understand?
 Those who do not understand can close the ticket. Others can re-open the
 ticket, think better and improve. Do not waste your time answering me that
 you do not agree. This is only another idea to improve lazy evaluation. Of
 course, I will not
 make a proposal. Thank you.

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


More information about the ghc-tickets mailing list