[1 .. n] というリストが作りたいんでしょうか?
だったら、

let rec make_list current n =
if current = n then []
else current :: make_list (current + 1) n

でどうでせう。遅延評価とかは全然分からないので、聞かないで下さーい(はーと)