Logo

Programming-Idioms

  • D
  • Smalltalk

Idiom #163 Print list elements by group of 2

Print all the list elements, two by two, assuming list length is even.

list pairsDo: [:a :b |
  Transcript showln: 'a: ' , a , ' b: ' , b].
import std.range;
list.chunks(2).each!writeln;

D's ranges combined with higher-order functions allow to write one liner expressions statements that contain loops.
#include <stdio.h>
for (unsigned i = 0; i < sizeof(list) / sizeof(list[0]); i += 2)
	printf("%d, %d\n", list[i], list[i + 1]);

I'm treating list as an array not a list because C doesn't have lists built in.
The length had better be even or there'll be undefined behaviour to pay!

New implementation...