[m-dev.] deforestation missed opportunities
Fergus Henderson
fjh at cs.mu.OZ.AU
Mon Apr 9 00:13:45 AEST 2001
In the following example, I think deforestation ought to be able to
optimize the call to max_list([A,B,C]. It does unfold the call to max_list/1.
But it doesn't go the next step and unfold the call to max_list_aux/2.
:- module max.
:- interface.
:- import_module int, list.
:- func max_triple(int, int, int) = int.
:- func max_list(list(int)) = int.
:- implementation.
:- import_module require.
max_triple(A,B,C) = max_list([A,B,C]).
max_list([]) = _ :- error("max of empty list").
max_list([X|Xs]) = max_list_aux(X, Xs).
:- func max_list_aux(int, list(int)) = int.
max_list_aux(X, []) = X.
max_list_aux(X, [Y|Ys]) = max_list_aux(int__max(X, Y), Ys).
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list