teaching Maxima logarithms



>> exp_log_to_power(e) := block( [logconcoeffp : lambda([s],true)],
>> subst("^" = lambda([a,b], if a = %e and ?mlogp(b) then first(b) else funmake("^", [a,b])), logcontract(e)));

>Wow. This makes my head spin trying to unpack all of the stuff going on
> in that function. 

Stop spinning. My code is clueless. All that is needed is 

 (%i9) exp_log_to_power(e) := block( [logconcoeffp : lambda([s],true)], logcontract(e))$

 (%i10) exp_log_to_power(%e^(a * log(10)));
 (%o10) 10^a


--Barton