The attachment compiles OK; yet, I don't understand how
the compiler knows what type val_9 has. The compile/run is:
<---cut here---
Compilation started at Tue Oct 21 13:17:41

make
runghc  uniplate.try.hs
val_9=Val 9
add_8_9=Add (Val 8) (Val 9)
children_add_8_9=[Val 8,Val 9]

Compilation finished at Tue Oct 21 13:17:42

>---cut here---
I would have expected that I would need to code this:

  let val_9 = (Val 9)::(Expr Eo)

but apparently not.

Could somebody explain?

TIA.

-Larry