upvote
Thanks! I just started the OCaml Programming Book this week to learn and language and get better at functional programming. Cant wait to jump into this after
reply
Why would someone want to learn Unix Programming using OCAML? Not a smart choice. Also this does not look easier to read than a shell script either.

let rec copy_rec source dest = let infos = lstat source in match infos.st_kind with | S_REG -> file_copy source dest; set_infos dest infos | S_LNK -> let link = readlink source in symlink link dest | S_DIR -> mkdir dest 0o200; Misc.iter_dir (fun file -> if file <> Filename.current_dir_name && file <> Filename.parent_dir_name then copy_rec (Filename.concat source file) (Filename.concat dest file)) source; set_infos dest infos | _ -> prerr_endline ("Can't cope with special file " ^ source)

reply
OCaml is a weird teaching choice for broad Unix programming, but it makes more sense than bash once the code stops being toy-sized and starts touching files, processes, and error paths in more than one place. Shell scripts let typos turn into state changes, and C gives you the usual memory footguns.

That snippet is ugly. Cleaner OCaml is easier to maintain than the average bash blob if you care more about finding mistakes before prod than saving ten minutes on ML syntax.

reply