import std.stdio; @property bool empty(T)(T[] a) { return a.length == 0; } @property ref T front(T)(T[] a) { return a[0]; } void popFront(T)(ref T[] a) { a = a[1 .. $]; } R find(R, T)(R haystack, T needle) if (is(typeof(haystack.front != needle) == bool)) { while (!haystack.empty && haystack.front != needle) { haystack.popFront(); } return haystack; } unittest { writeln(find([1, 2, 3], 2.0)); assert(find([1, 2, 3], 1.0)); }