fix: add tail recursion
This commit is contained in:
		
							parent
							
								
									7ce4658d30
								
							
						
					
					
						commit
						25a27f7fc4
					
				
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -34,7 +34,16 @@ let findIndex xs test =
 | 
			
		|||
    in
 | 
			
		||||
  recursiveHelper xs 0
 | 
			
		||||
 | 
			
		||||
let rec unwind xs = 
 | 
			
		||||
let unwind xs = 
 | 
			
		||||
  let rec tailRecursiveHelper ys acc =
 | 
			
		||||
    match ys with
 | 
			
		||||
    | [] -> Ok(acc)
 | 
			
		||||
    | Error e :: _ -> Error e
 | 
			
		||||
    | Ok(y) :: ys -> tailRecursiveHelper ys (y :: acc) 
 | 
			
		||||
  in 
 | 
			
		||||
  tailRecursiveHelper xs []
 | 
			
		||||
  
 | 
			
		||||
  (* previous version, which wasn't tail-recursive
 | 
			
		||||
  match xs with
 | 
			
		||||
  | [] -> Ok([])
 | 
			
		||||
  | Error e:: ys -> Error e
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +52,7 @@ let rec unwind xs =
 | 
			
		|||
      | Ok(zs) -> Ok(y :: zs)
 | 
			
		||||
      | Error e -> Error e
 | 
			
		||||
    )
 | 
			
		||||
  *)
 | 
			
		||||
 | 
			
		||||
(* Basic samplers *)
 | 
			
		||||
let sampleZeroToOne () : float = Random.float 1.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user