<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>It's sometimes useful to get the first element of a sequence. To that end I'd like to propose<br></div>
<div>&nbsp;</div>
<div><p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(112, 61, 170);"><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">extension</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span>SequenceType<span style="font-variant-ligatures: no-common-ligatures; color: #000000"> {</span></p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(144, 45, 208);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">&nbsp; &nbsp; </span>/// Returns the first element of `self`, or `nil` if `self` is empty.</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(144, 45, 208);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">&nbsp; &nbsp; </span>/// - Complexity: O(1)</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(112, 61, 170);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000">&nbsp; &nbsp; </span><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">var</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> first: </span>Self<span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span>Generator<span style="font-variant-ligatures: no-common-ligatures; color: #000000">.</span>Element<span style="font-variant-ligatures: no-common-ligatures; color: #000000">? {</span></p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">var</span> gen = <span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81">generate</span>()</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2">return</span> gen.<span style="font-variant-ligatures: no-common-ligatures; color: #3d1d81">next</span>()</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; }</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">}<br></p><div>&nbsp;</div>
<div>I think it makes sense to add this property to the definition of SequenceType as well, so various sequences can override it to avoid constructing a generator.<br></div>
</div>
<div>&nbsp;</div>
<div>With this added to SequenceType, we can remove it from CollectionType, as the behavior will be the same.<br></div>
<div>&nbsp;</div>
<div>-Kevin Ballard</div>
</body>
</html>