Precomputed:

--- This system is (very) experimental ---
The trace shows values exchanged on channels; "output" is the standard output channel.

 Simple Parallel Functional Language L.A. Monash Comp Sci 8/4/93
  1: let
  2:   fact = lambda n.
  3:   let rec
  4:     f = lambda lo. lambda hi. lambda opch.
  5:       if lo = hi then
  6:         opch!hi -> stop
  7:       else {lo < hi}
  8:       let mid = (lo+hi)/2,
  9:           ch  = chan
 10:       in {parallel divide and conquer}
 11:         f lo       mid ch || {small numbers's}
 12:         f (mid+1)   hi ch || {big   numbers's}
 13:         ch?x -> ch?y -> opch!x*y {combine} -> stop
 14:   in f 1 n output
 15: 
 16: in fact 10
 17: 
 18: {\fB Parallel Factorial Program. \fP}
 19: 
 20: 

 --- end of parsing --- 
(let ((fact =(lambda (n ).(let rec ((f =(lambda (lo ).(lambda (hi ).(lambda (opch ).(if ((lo )=(hi ))then (((opch )!(hi ))->(stop ))else (let ((mid =(((lo )+(hi ))/(2 ))),
((ch =(chan))))
in ((((((f )(lo ))(mid ))(ch ))||((((f )((mid )+(1 )))(hi ))(ch )))||(((ch )?(x ))->(((ch )?(y ))->(((opch )!((x )*(y )))->(stop ))))))))))))
in ((((f )(1 ))(n ))(output ))))))
in ((fact )(10 )))
 --- running --- 
 ch3 1 ch3 2 ch4 2 ch4 3 ch5 4 ch5 5 ch6 6 ch6 20 ch7 6 ch7 7 ch8 42 ch8 8 ch9 9 ch9 10 ch10 336 ch10 90 ch11 120 ch11 30240
 output 3628800
2 processes left
484 evals, 103 env cells used, 0 cells used

 --- finished --- 

PFL / CCS interpreter by L.Allison, School of Computer Science and SWE, Monash University, Australia 3800
Notes and examples: [www.allisons.org/ll/FP/LambdaCCS/]
Run on Sun Microsystems Solaris (Unix) + Pascal; time: Fri Jun 19 11:52:55 EST 2015