RE: [commit: ghc] master: Add rule mapFB c (λx.x) = c (2fa4421)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

RE: [commit: ghc] master: Add rule mapFB c (λx.x) = c (2fa4421)

GHC - devs mailing list
Joachim

Please, I beg you, add a comment to explain why this rule is useful. I'm sure you had a good reason for adding it, but it's not apparent from the code.

Thanks

Simon

|  -----Original Message-----
|  From: ghc-commits [mailto:[hidden email]] On Behalf
|  Of [hidden email]
|  Sent: 06 March 2017 23:52
|  To: [hidden email]
|  Subject: [commit: ghc] master: Add rule mapFB c (λx.x) = c (2fa4421)
|  
|  Repository : ssh://[hidden email]/ghc
|  
|  On branch  : master
|  Link       :
|  https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fghc.ha
|  skell.org%2Ftrac%2Fghc%2Fchangeset%2F2fa44217c1d9722227297eefb0d6c6aed
|  7e128ca%2Fghc&data=02%7C01%7Csimonpj%40microsoft.com%7Cc5db3687da004cd
|  11d0f08d464ebc6ca%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362444
|  11212143808&sdata=KMHS17MUXQUkBOaMbFiRxXiRM8gIvlEMGz%2FDw7F7Njo%3D&res
|  erved=0
|  
|  >---------------------------------------------------------------
|  
|  commit 2fa44217c1d9722227297eefb0d6c6aed7e128ca
|  Author: Joachim Breitner <[hidden email]>
|  Date:   Mon Mar 6 17:30:52 2017 -0500
|  
|      Add rule mapFB c (λx.x) = c
|  
|      Test Plan: exended T2110 with a case for that.
|  
|      Reviewers: austin, hvr, dfeuer, bgamari
|  
|      Reviewed By: dfeuer
|  
|      Subscribers: dfeuer, thomie
|  
|      Differential Revision: https://phabricator.haskell.org/D3275
|  
|  
|  >---------------------------------------------------------------
|  
|  2fa44217c1d9722227297eefb0d6c6aed7e128ca
|   libraries/base/GHC/Base.hs                        | 1 +
|   testsuite/tests/simplCore/should_run/T2110.hs     | 3 +++
|   testsuite/tests/simplCore/should_run/T2110.stdout | 1 +
|   3 files changed, 5 insertions(+)
|  
|  diff --git a/libraries/base/GHC/Base.hs b/libraries/base/GHC/Base.hs
|  index 2f155c6..6f9d454 100644
|  --- a/libraries/base/GHC/Base.hs
|  +++ b/libraries/base/GHC/Base.hs
|  @@ -973,6 +973,7 @@ mapFB c f = \x ys -> c (f x) ys
|   "map"       [~1] forall f xs.   map f xs                = build (\c n
|  -> foldr (mapFB c f) n xs)
|   "mapList"   [1]  forall f.      foldr (mapFB (:) f) []  = map f
|   "mapFB"     forall c f g.       mapFB (mapFB c f) g     = mapFB c
|  (f.g)
|  +"mapFB/id"  forall c.           mapFB c (\x -> x)       = c
|     #-}
|  
|   -- See Breitner, Eisenberg, Peyton Jones, and Weirich, "Safe Zero-
|  cost diff --git a/testsuite/tests/simplCore/should_run/T2110.hs
|  b/testsuite/tests/simplCore/should_run/T2110.hs
|  index 610be09..d945fac 100644
|  --- a/testsuite/tests/simplCore/should_run/T2110.hs
|  +++ b/testsuite/tests/simplCore/should_run/T2110.hs
|  @@ -5,6 +5,8 @@ import Unsafe.Coerce
|  
|   newtype Age = Age Int
|  
|  +foo :: [Int] -> [Int]
|  +foo = map id
|   fooAge :: [Int] -> [Age]
|   fooAge = map Age
|   fooCoerce :: [Int] -> [Age]
|  @@ -19,6 +21,7 @@ same x y = case reallyUnsafePtrEquality#
|  (unsafeCoerce x) y of
|  
|   main = do
|       let l = [1,2,3]
|  +    same (foo l) l
|       same (fooAge l) l
|       same (fooCoerce l) l
|       same (fooUnsafeCoerce l) l
|  diff --git a/testsuite/tests/simplCore/should_run/T2110.stdout
|  b/testsuite/tests/simplCore/should_run/T2110.stdout
|  index 55f7ebb..4ff957b 100644
|  --- a/testsuite/tests/simplCore/should_run/T2110.stdout
|  +++ b/testsuite/tests/simplCore/should_run/T2110.stdout
|  @@ -1,3 +1,4 @@
|   yes
|   yes
|   yes
|  +yes
|  
|  _______________________________________________
|  ghc-commits mailing list
|  [hidden email]
|  https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h
|  askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
|  commits&data=02%7C01%7Csimonpj%40microsoft.com%7Cc5db3687da004cd11d0f0
|  8d464ebc6ca%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362444112121
|  43808&sdata=y%2BRYDSeV9k2Uj%2BlPtE%2BeIeG05mQvE97QV0B0wgl7cx4%3D&reser
|  ved=0
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

RE: [commit: ghc] master: Add rule mapFB c (λx.x) = c (2fa4421)

Joachim Breitner-2
Hi,

I guess you are right. I should also be more careful about distinguishing Phab DR that I create to get feedback from CI and review, even before I do such non-functional polishing of the patch, and ready-to-apply changes (which I'd commit myself anyways).

Joachim




Am 8. März 2017 13:22:55 MEZ schrieb Simon Peyton Jones <[hidden email]>:

>Joachim
>
>Please, I beg you, add a comment to explain why this rule is useful.
>I'm sure you had a good reason for adding it, but it's not apparent
>from the code.
>
>Thanks
>
>Simon
>
>|  -----Original Message-----
>|  From: ghc-commits [mailto:[hidden email]] On Behalf
>|  Of [hidden email]
>|  Sent: 06 March 2017 23:52
>|  To: [hidden email]
>|  Subject: [commit: ghc] master: Add rule mapFB c (λx.x) = c (2fa4421)
>|  
>|  Repository : ssh://[hidden email]/ghc
>|  
>|  On branch  : master
>|  Link       :
>|
>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fghc.ha
>|
>skell.org%2Ftrac%2Fghc%2Fchangeset%2F2fa44217c1d9722227297eefb0d6c6aed
>|
>7e128ca%2Fghc&data=02%7C01%7Csimonpj%40microsoft.com%7Cc5db3687da004cd
>|
>11d0f08d464ebc6ca%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362444
>|
>11212143808&sdata=KMHS17MUXQUkBOaMbFiRxXiRM8gIvlEMGz%2FDw7F7Njo%3D&res
>|  erved=0
>|  
>|  >---------------------------------------------------------------
>|  
>|  commit 2fa44217c1d9722227297eefb0d6c6aed7e128ca
>|  Author: Joachim Breitner <[hidden email]>
>|  Date:   Mon Mar 6 17:30:52 2017 -0500
>|  
>|      Add rule mapFB c (λx.x) = c
>|  
>|      Test Plan: exended T2110 with a case for that.
>|  
>|      Reviewers: austin, hvr, dfeuer, bgamari
>|  
>|      Reviewed By: dfeuer
>|  
>|      Subscribers: dfeuer, thomie
>|  
>|      Differential Revision: https://phabricator.haskell.org/D3275
>|  
>|  
>|  >---------------------------------------------------------------
>|  
>|  2fa44217c1d9722227297eefb0d6c6aed7e128ca
>|   libraries/base/GHC/Base.hs                        | 1 +
>|   testsuite/tests/simplCore/should_run/T2110.hs     | 3 +++
>|   testsuite/tests/simplCore/should_run/T2110.stdout | 1 +
>|   3 files changed, 5 insertions(+)
>|  
>|  diff --git a/libraries/base/GHC/Base.hs b/libraries/base/GHC/Base.hs
>|  index 2f155c6..6f9d454 100644
>|  --- a/libraries/base/GHC/Base.hs
>|  +++ b/libraries/base/GHC/Base.hs
>|  @@ -973,6 +973,7 @@ mapFB c f = \x ys -> c (f x) ys
>|   "map"       [~1] forall f xs.   map f xs                = build (\c
>n
>|  -> foldr (mapFB c f) n xs)
>|   "mapList"   [1]  forall f.      foldr (mapFB (:) f) []  = map f
>|   "mapFB"     forall c f g.       mapFB (mapFB c f) g     = mapFB c
>|  (f.g)
>|  +"mapFB/id"  forall c.           mapFB c (\x -> x)       = c
>|     #-}
>|  
>|   -- See Breitner, Eisenberg, Peyton Jones, and Weirich, "Safe Zero-
>|  cost diff --git a/testsuite/tests/simplCore/should_run/T2110.hs
>|  b/testsuite/tests/simplCore/should_run/T2110.hs
>|  index 610be09..d945fac 100644
>|  --- a/testsuite/tests/simplCore/should_run/T2110.hs
>|  +++ b/testsuite/tests/simplCore/should_run/T2110.hs
>|  @@ -5,6 +5,8 @@ import Unsafe.Coerce
>|  
>|   newtype Age = Age Int
>|  
>|  +foo :: [Int] -> [Int]
>|  +foo = map id
>|   fooAge :: [Int] -> [Age]
>|   fooAge = map Age
>|   fooCoerce :: [Int] -> [Age]
>|  @@ -19,6 +21,7 @@ same x y = case reallyUnsafePtrEquality#
>|  (unsafeCoerce x) y of
>|  
>|   main = do
>|       let l = [1,2,3]
>|  +    same (foo l) l
>|       same (fooAge l) l
>|       same (fooCoerce l) l
>|       same (fooUnsafeCoerce l) l
>|  diff --git a/testsuite/tests/simplCore/should_run/T2110.stdout
>|  b/testsuite/tests/simplCore/should_run/T2110.stdout
>|  index 55f7ebb..4ff957b 100644
>|  --- a/testsuite/tests/simplCore/should_run/T2110.stdout
>|  +++ b/testsuite/tests/simplCore/should_run/T2110.stdout
>|  @@ -1,3 +1,4 @@
>|   yes
>|   yes
>|   yes
>|  +yes
>|  
>|  _______________________________________________
>|  ghc-commits mailing list
>|  [hidden email]
>|
>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h
>|  askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
>|
>commits&data=02%7C01%7Csimonpj%40microsoft.com%7Cc5db3687da004cd11d0f0
>|
>8d464ebc6ca%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362444112121
>|
>43808&sdata=y%2BRYDSeV9k2Uj%2BlPtE%2BeIeG05mQvE97QV0B0wgl7cx4%3D&reser
>|  ved=0
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs