Permutations: Difference between revisions

Add Seed7 example
(Added a non-library implementation for haskell)
(Add Seed7 example)
Line 1,812:
List('c, 'a, 'b)
List('c, 'b, 'a)</pre>
 
=={{header|Scheme}}==
<lang scheme>; translation of ocaml : mostly iterative, with auxiliary recursive functions for some loops
Line 1,874 ⟶ 1,875:
; 2 0 1
; 2 1 0</lang>
 
=={{header|Seed7}}==
<lang seed7>$ include "seed7_05.s7i";
 
const type: permutations is array array integer;
 
const func permutations: permutations (in array integer: items) is func
result
var permutations: permsList is 0 times 0 times 0;
local
const proc: perms (in array integer: sequence, in array integer: prefix) is func
local
var integer: element is 0;
var integer: index is 0;
begin
if length(sequence) <> 0 then
for element key index range sequence do
perms(sequence[.. pred(index)] & sequence[succ(index) ..], prefix & [] (element));
end for;
else
permsList &:= prefix;
end if;
end func;
begin
perms(items, 0 times 0);
end func;
const proc: main is func
local
var array integer: perm is 0 times 0;
var integer: element is 0;
begin
for perm range permutations([] (1, 2, 3)) do
for element range perm do
write(element <& " ");
end for;
writeln;
end for;
end func;</lang>
 
Output:
<pre>
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
</pre>
 
=={{header|Smalltalk}}==