Sha256: d7288224d1f5eccdb629c527574df73b3d63b40fd2150ffbb145cc035e587f4b

Contents?: true

Size: 792 Bytes

Versions: 396

Compression:

Stored size: 792 Bytes

Contents

let length l =
  let rec go acc = function
    | [] -> acc
    | _ :: t -> go (acc+1) t in
  go 0 l

let reverse l =
  let rec go acc = function
    | [] -> acc
    | h :: t -> go (h :: acc) t in
  go [] l

let map ~f l =
  let rec go acc = function
    | [] -> acc
    | h :: t -> go (f h :: acc) t in
  go [] l |> reverse

let filter ~f l =
  let rec go acc = function
    | [] -> acc
    | h :: t when f h -> go (h :: acc) t
    | _ :: t -> go acc t in
  go [] l |> reverse

let rec fold ~init:acc ~f = function
  | [] -> acc
  | (h :: t) -> fold ~init:(f acc h) ~f t

let append a b =
  let rec go acc = function
  | [] -> acc
  | h :: t -> go (h :: acc) t in
  go b (reverse a)

let concat ll =
  reverse ll |> fold ~init:[] ~f:(fun acc x -> append x acc)

(* vim:et:ts=2:sw=2:sts=2
 *)

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.179 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.178 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.177 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.176 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.175 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.174 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.173 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.172 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.171 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.170 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.169 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.167 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.166 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.165 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.164 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.163 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.162 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.161 tracks/ocaml/exercises/list-ops/example.ml
trackler-2.2.1.160 tracks/ocaml/exercises/list-ops/example.ml