Skip to content

Instantly share code, notes, and snippets.

@simonthum
Created February 26, 2016 12:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simonthum/b6378177e503cc3c6359 to your computer and use it in GitHub Desktop.
Save simonthum/b6378177e503cc3c6359 to your computer and use it in GitHub Desktop.
make type-safe ceylon tuples from sequences
[X] makeTuple1<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v];
}
shared X[2] makeTuple2<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple1(s.rest)];
}
shared X[3] makeTuple3<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple2(s.rest)];
}
shared X[4] makeTuple4<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple3(s.rest)];
}
shared X[5] makeTuple5<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple4(s.rest)];
}
shared X[6] makeTuple6<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple5(s.rest)];
}
shared X[7] makeTuple7<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple6(s.rest)];
}
shared X[8] makeTuple8<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple7(s.rest)];
}
shared X[9] makeTuple9<X>([X*] s) {
"The sequence does not have enough elements."
assert(exists v = s.first);
return [v, *makeTuple8(s.rest)];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment