खोज…


मानक इनपुट और प्रिंट से मानक आउटपुट तक पढ़ें

हम निम्नलिखित सामग्री के साथ एक फाइल तैयार करते हैं, जिसे reverser.ml कहा जाता है:

let acc = ref [] in
    try
        while true do
            acc := read_line () :: !acc;
        done
    with
        End_of_file -> print_string (String.concat "\n" !acc)

फिर हम निम्नलिखित कमांड का उपयोग करके अपने प्रोग्राम को संकलित करते हैं:

$ ocamlc -o reverser.byte reverser.ml

हम अपने नए निष्पादन योग्य डेटा को पाइपिंग द्वारा इसका परीक्षण करते हैं:

$ cat data.txt
one
two
three
$ ./reverser.byte < data.txt
three
two
one

reserver.ml प्रोग्राम एक अनिवार्य शैली में लिखा गया है। जबकि अनिवार्य शैली ठीक है, इसकी तुलना कार्यात्मक अनुवाद से करना दिलचस्प है:

let maybe_read_line () =
  try Some(read_line())
  with End_of_file -> None

let rec loop acc =
  match maybe_read_line () with
  | Some(line) -> loop (line :: acc)
  | None -> List.iter print_endline acc

let () = loop []

फ़ंक्शन को शुरू करने के लिए धन्यवाद maybe_read_line का नियंत्रण प्रवाह पहले की तुलना में इस दूसरे संस्करण में बहुत सरल है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow