A friend came across a quadratic Bézier curve function in his codebase that used a gigantic rats nest of a switch table to perform the computation. He challenged me to find a single, short expression that would allow him to replace the gigantic block of code.

In attempting to satisfy two different curiosities, I thought I'd try implementing the function in OCaml. I'm a very novice OCaml programmer and I'm also unfamiliar with the function and this *specific* implementation is hard to come by via Google.

Critiques on both the function's performance/correctness as well as its implementation are very much appreciated.

Implementation of [Quadratic Bézier Curve](http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B.C3.A9zier_curves):

```
let rec b2 n =
  let p1 = -10. in
  let p2 = 10. in
  let q = n*.n in
  let rec b2i n i hd =
    if i > n then
      List.rev hd
    else
      let t = i /. n in
      b2i n (i+.1.) ((((1.-.t)**2.)*.p1+.(2.*.t*.(1.-.t)*.q)+.(t**2.)*.p2) :: hd)
  in 
  b2i n 0. []
;;

let floatprint lst = 
  List.iter (fun f -> Printf.printf "%f; " f) lst ;;

floatprint (b2 8.);;

```