Jump to content

Type detection: Difference between revisions

Line 18:
If not practical, show how the caller would coerce a type that can be passed to the library function.
<br><br>
 
=={{header|ATS}}==
===Using garbage collection and '''datatype'''===
<lang ats>#include "share/atspre_staload.hats"
 
datatype source_t =
| source_t_string of string
| source_t_FILEref of FILEref
 
extern fun
print_text (source : source_t) : void
 
implement
print_text (source) =
case+ source of
| source_t_string s => print! (s)
| source_t_FILEref f =>
let
var c : int = fileref_getc (f)
in
while (0 <= c)
begin
fileref_putc (stdout_ref, c);
c := fileref_getc (f)
end
end
 
implement
main0 () =
let
val f = fileref_open_exn ("type_detection-postiats.dats",
file_mode_r)
in
print_text (source_t_string "This\nis a\ntext.\n");
print_text (source_t_FILEref f)
end</lang>
 
{{out}}
$ patscc -DATS_MEMALLOC_GCBDW type_detection-postiats.dats -lgc && ./a.out
<pre>This
is a
text.
#include "share/atspre_staload.hats"
 
datatype source_t =
| source_t_string of string
| source_t_FILEref of FILEref
 
extern fun
print_text (source : source_t) : void
 
implement
print_text (source) =
case+ source of
| source_t_string s => print! (s)
| source_t_FILEref f =>
let
var c : int = fileref_getc (f)
in
while (0 <= c)
begin
fileref_putc (stdout_ref, c);
c := fileref_getc (f)
end
end
 
implement
main0 () =
let
val f = fileref_open_exn ("type_detection-postiats.dats",
file_mode_r)
in
print_text (source_t_string "This\nis a\ntext.\n");
print_text (source_t_FILEref f)
end</pre>
 
=={{header|AWK}}==
1,448

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.