Commit 061d33c9 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com

Make record selection look cheap

exprIsCheap was already making record selection look cheap, esp for
dictionary selection; e.g.
   (==) dEq

The idea is to allow those record selections to migrate inside a
lambda, because on the whole it's more expensive to share than 
repeat them.

But sometimes dictionary selection is nested; e.g.
   (==) ($p1Num dNum)

This turned out to make a (fragile) rewrite rule fire a little
more robustly, but it seems like a good idea in any case.

This patch makes nested record selections also look cheap.
parent c949e1a9
......@@ -476,7 +476,7 @@ exprIsCheap other_expr -- Applications and variables
-- to bother to check the number of args
--------------
go_sel [arg] = exprIsTrivial arg -- I'm experimenting with making record selection
go_sel [arg] = exprIsCheap arg -- I'm experimenting with making record selection
go_sel other = False -- look cheap, so we will substitute it inside a
-- lambda. Particularly for dictionary field selection.
-- BUT: Take care with (sel d x)! The (sel d) might be cheap, but
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment