b'\n_START_ARTICLE_\nAvaluaci\xc3\xb3 tardana\n_START_SECTION_\nLlistes d\'avaluaci\xc3\xb3 tardana en OCaml\n_START_PARAGRAPH_\nopen Printf ;;(* tipus de llista d\'avaluaci\xc3\xb3 tardana (ang:lazy) *)type \'a node_t =_NEWLINE_ | Nil_NEWLINE_ | Cons of \'a * \'a zlist_tand \'a zlist_t = \'a node_t Lazy.t;;(** generador tard\xc3\xa0 de m elements; \'\'lazy\'\' deixa la generaci\xc3\xb3 en suspens *)let rec genera_llista (m:int) :\'a zlist_t = _NEWLINE_ lazy ( match m with_NEWLINE_ | 0 -> Nil_NEWLINE_ | n -> Cons( n, genera_llista (n-1))_NEWLINE_ ) ;;(** fold_left_tard: aplica una op. bin\xc3\xa0ria sobre un acumulador i els elem. d\'una llista d\'avaluaci\xc3\xb3 tardana *)let rec fold_left_tard f acum (llista:\'a zlist_t) = _NEWLINE_ match (Lazy.force llista) with (* for\xc3\xa7a l\'avaluaci\xc3\xb3 del generador de la llista obtenint-ne 1 elem. *)_NEWLINE_ | Nil -> acum_NEWLINE_ | Cons( x, xs) -> fold_left_tard f (f acum x) xs;;let op_binaria = fun (a:float) (b:int) -> a +. sqrt (float_of_int b) ;; (* qualsevol que interessi *)let _ = _NEWLINE_ printf "resultat: %.2f\\n" (fold_left_tard op_binaria 0. (genera_llista 100000)) _NEWLINE_;;'