Hal Daume III writes:
:
| So, you're probably better off with:
|
| > nco wn = nco'
| > where wn' = cis wn
| > nco' = 1 : map (wn'*) nco'
|
| In which case it will only be evaluated once.

The following version also evaluates 'cis wn' only once.

> nco wn = iterate (cis wn *) 1

I've only tested this in hugs with no command line flags, and can't explain the theory offhand.

> import Complex()
> import Trace
> cis t = trace "\ncis\n" (Complex.cis t)
> nco wn = iterate (cis wn *) 1

Main> take 5 (nco (pi/2))
[1.0 :+ 0.0,
cis
(-4.37114e-08) :+ 1.0,(-1.0) :+ (-8.74228e-08),1.31134e-07 :+ (-1.0),1.0 :+ 1.74846e-07]

Regards,
Tom


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to