Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
49
Task/Sort-three-variables/CLU/sort-three-variables.clu
Normal file
49
Task/Sort-three-variables/CLU/sort-three-variables.clu
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
% Sort three variables.
|
||||
% The variables must all be of the same type, and the type
|
||||
% must implement the less-than comparator.
|
||||
sort_three = proc [T: type] (x,y,z: T) returns (T,T,T)
|
||||
where T has lt: proctype (T,T) returns (bool)
|
||||
if y<x then x,y := y,x end
|
||||
if z<y then y,z := z,y end
|
||||
if y<x then x,y := y,z end
|
||||
return(x,y,z)
|
||||
end sort_three
|
||||
|
||||
% Test it out on three values, when also given a type and a
|
||||
% formatter.
|
||||
example = proc [T: type] (x,y,z: T, fmt: proctype (T) returns (string))
|
||||
where T has lt: proctype (T,T) returns (bool)
|
||||
po: stream := stream$primary_output()
|
||||
|
||||
% Print the variables
|
||||
stream$putl(po, "x=" || fmt(x)
|
||||
|| " y=" || fmt(y)
|
||||
|| " z=" || fmt(z))
|
||||
|
||||
% Sort them
|
||||
x,y,z := sort_three[T](x,y,z)
|
||||
|
||||
% Print them again
|
||||
stream$putl(po, "x=" || fmt(x)
|
||||
|| " y=" || fmt(y)
|
||||
|| " z=" || fmt(z)
|
||||
|| "\n")
|
||||
end example
|
||||
|
||||
% And then we also need formatters, since those are not standardized
|
||||
% such as '<' is.
|
||||
fmt_real = proc (n: real) returns (string)
|
||||
return(f_form(n,2,2))
|
||||
end fmt_real
|
||||
|
||||
fmt_str = proc (s: string) returns (string)
|
||||
return( "'" || s || "'" )
|
||||
end fmt_str
|
||||
|
||||
% Test it out on values of each type
|
||||
start_up = proc ()
|
||||
example[int] (77444, -12, 0, int$unparse)
|
||||
example[real] (11.3, -9.7, 11.17, fmt_real)
|
||||
example[string] ("lions, tigers and", "bears, oh my!",
|
||||
"(from the \"Wizard of Oz\")", fmt_str)
|
||||
end start_up
|
||||
Loading…
Add table
Add a link
Reference in a new issue