equal
  deleted
  inserted
  replaced
  
    
    
   269   | 
   269   | 
   270 square(42 + 8)  | 
   270 square(42 + 8)  | 
   271   | 
   271   | 
   272 // This is called "strict evaluation".  | 
   272 // This is called "strict evaluation".  | 
   273   | 
   273   | 
   274 // On the contrary, say we have a pretty expensive operation:  | 
   274 // In contrast say we have a pretty expensive operation:  | 
   275   | 
   275   | 
   276 def peop(n: BigInt): Boolean = peop(n + 1)   | 
   276 def peop(n: BigInt): Boolean = peop(n + 1)   | 
   277   | 
   277   | 
   278 val a = "foo"  | 
   278 val a = "foo"  | 
   279 val b = "foo"  | 
   279 val b = "foo"  | 
   392 }  | 
   392 }  | 
   393   | 
   393   | 
   394 enuml(1, "a")  | 
   394 enuml(1, "a")  | 
   395 enuml(1, "a").size  | 
   395 enuml(1, "a").size  | 
   396 enuml(2, "a").size  | 
   396 enuml(2, "a").size  | 
   397 enuml(3, "a").size // out of heap space  | 
   397 enuml(3, "a").size   | 
   398   | 
   398 enuml(4, "a").size // out of heap space  | 
   399   | 
   399   | 
   400   | 
   400   | 
   401 def enum(rs: LazyList[Rexp]) : LazyList[Rexp] =   | 
   401 def enum(rs: LazyList[Rexp]) : LazyList[Rexp] =   | 
   402   rs #::: enum( (for (r1 <- rs; r2 <- rs) yield ALT(r1, r2)) #:::  | 
   402   rs #::: enum( (for (r1 <- rs; r2 <- rs) yield ALT(r1, r2)) #:::  | 
   403                 (for (r1 <- rs; r2 <- rs) yield SEQ(r1, r2)) #:::  | 
   403                 (for (r1 <- rs; r2 <- rs) yield SEQ(r1, r2)) #:::  | 
   404                 (for (r1 <- rs) yield STAR(r1)) )  | 
   404                 (for (r1 <- rs) yield STAR(r1)) )  | 
   405   | 
   405   | 
   406   | 
   406   | 
   407 enum(LazyList(ZERO, ONE, CHAR('a'), CHAR('b'))).take(200).force | 
   407 enum(LazyList(ZERO, ONE, CHAR('a'), CHAR('b'))).take(200).force | 
   408 enum(LazyList(ZERO, ONE, CHAR('a'), CHAR('b'))).take(5_000_000).force | 
   408 enum(LazyList(ZERO, ONE, CHAR('a'), CHAR('b'))).take(5_000_000).force // out of memory | 
   409   | 
   409   | 
   410   | 
   410   | 
   411 def depth(r: Rexp) : Int = r match { | 
   411 def depth(r: Rexp) : Int = r match { | 
   412   case ZERO => 0  | 
   412   case ZERO => 0  | 
   413   case ONE => 0  | 
   413   case ONE => 0  |