fix stupid bug

This commit is contained in:
Simon Cruanes 2023-12-05 15:02:41 -05:00
parent 4682f9787b
commit f68d187142
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 16 additions and 2 deletions

View file

@ -313,7 +313,7 @@ let rec unfold_kont f seed k =
match f seed with match f seed with
| None -> k [] | None -> k []
| Some (v, next) -> | Some (v, next) ->
let k' tl = v :: k tl in let k' tl = k (v :: tl) in
unfold_kont f next k' unfold_kont f next k'
let[@inline] unfold f seed = let[@inline] unfold f seed =
@ -326,7 +326,7 @@ let[@inline] unfold f seed =
| Some (v, next) -> v :: direct (i - 1) f next | Some (v, next) -> v :: direct (i - 1) f next
) )
in in
direct 20 f seed direct 100 f seed
[@@@else_] [@@@else_]

View file

@ -156,6 +156,20 @@ assert_equal ~printer:Q.Print.int (List.length l) 1_000_000;
true true
;; ;;
t ~name:"unfold3" @@ fun () ->
let l =
unfold
(fun n ->
if n < 5_000 then
Some (n, n + 1)
else
None)
0
in
assert_equal ~printer:Q.Print.(list int) (List.init 5000 Fun.id) l;
true
;;
t @@ fun () -> init 0 (fun _ -> 0) = [];; t @@ fun () -> init 0 (fun _ -> 0) = [];;
t @@ fun () -> init 1 (fun x -> x) = [ 0 ];; t @@ fun () -> init 1 (fun x -> x) = [ 0 ];;
t @@ fun () -> init 1000 (fun x -> x) = 0 -- 999;; t @@ fun () -> init 1000 (fun x -> x) = 0 -- 999;;