f([4,12,15,6,11])
= f([12,15,6,11]) (since 4 <= 10)
= 144::f([15,6,11]) (since 12 > 10 and 12*12=144)
= 144::225::f([6,11]) (since 15 > 10 and 15*15=225)
= 144::225::f([11]) (since 6 <= 10)
= 144::225::121::f([]) (since 11 > 10 and 11*11=121)
= 144::225::121::[]
= 144::225::[121]
= 144::[225,121]
= [144,225,121]
Remarks.
Be sure to follow the rules exactly. Do not forget about the [] at the end. The :: operator associates to the right, so x :: y :: z is understood to mean x :: (y :: z).