<div dir="ltr"><div>How do we feel about changing the label to `repeated:`, even in cases where `count:` is 1?<br><br></div><div>This would mean that calls would read like this: `<span style="font-family:monospace,monospace">ptr.initialize(repeated: value)</span>`<br></div><div><br></div>A grep through the stdlib shows that this is by far the most common use case:<br><br><font size="1"><span style="font-family:monospace,monospace">swift-source/swift$ grep initialize\(to: . -r<br>./stdlib/private/SwiftPrivatePthreadExtras/SwiftPrivatePthreadExtras.swift:    result.initialize(to: block(arg))<br>./stdlib/private/StdlibUnittest/OpaqueIdentityFunctions.swift:  ptr.initialize(to: x)<br>./stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift:  anyPointer.initialize(to: any)<br>./stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift:  fn.initialize(to: ThickFunction0(function: function))<br>./stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift:  fn.initialize(to: ThickFunction1(function: function))<br>./stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift:  fn.initialize(to: ThickFunction2(function: function))<br>./stdlib/private/SwiftReflectionTest/SwiftReflectionTest.swift:  fn.initialize(to: ThickFunction3(function: function))<br>./stdlib/private/SwiftPrivate/ShardedAtomicCounter.swift:      (shards + i).initialize(to: 0)<br>./stdlib/public/SDK/Foundation/NSError.swift:    out.initialize(to: bridged)<br>./stdlib/public/core/UnsafeRawPointer.swift.gyb:    //   (self.assumingMemoryBound(to: T.self) + i).initialize(to: source[i])<br>./stdlib/public/core/UnsafeRawPointer.swift.gyb:      //   .initialize(to: (source + i).move())<br>./stdlib/public/core/UnsafeRawPointer.swift.gyb:      //   (--dst).initialize(to: (--src).move())<br>./stdlib/public/core/Arrays.swift.gyb:      p.initialize(to: repeatedValue)<br>./stdlib/public/core/Arrays.swift.gyb:    (_buffer.firstElementAddress + oldCount).initialize(to: newElement)<br>./stdlib/public/core/Arrays.swift.gyb:        p.initialize(to: x)<br>./stdlib/public/core/Arrays.swift.gyb:      p.initialize(to: newValues[q])<br>./stdlib/public/core/Arrays.swift.gyb:        (base + newCount).initialize(to: next)<br>./stdlib/public/core/AnyHashable.swift:    result.initialize(to: value)<br>./stdlib/public/core/AnyHashable.swift:        result.initialize(to: value)<br>./stdlib/public/core/AnyHashable.swift:  target.initialize(to: AnyHashable(value))<br>./stdlib/public/core/ArrayCast.swift:  target.initialize(to: _arrayForceCast(source.pointee))<br>./stdlib/public/core/ArrayCast.swift:    target.initialize(to: result)<br>./stdlib/public/core/ContiguousArrayBuffer.swift:      (resultPtr + i).initialize(to: _bridgeAnythingToObjectiveC(p[i]))<br>./stdlib/public/core/ContiguousArrayBuffer.swift:    p.initialize(to: source[i])<br>./stdlib/public/core/ContiguousArrayBuffer.swift:    p.initialize(to: element)<br>./stdlib/public/core/ArrayBuffer.swift:      result.initialize(to: result.pointee)<br>./stdlib/public/core/HashedCollections.swift.gyb:  target.initialize(to: _setDownCast(source.pointee))<br>./stdlib/public/core/HashedCollections.swift.gyb:    target.initialize(to: result)<br>./stdlib/public/core/HashedCollections.swift.gyb:  target.initialize(to: _dictionaryDownCast(source.pointee))<br>./stdlib/public/core/HashedCollections.swift.gyb:    target.initialize(to: result)<br>./stdlib/public/core/HashedCollections.swift.gyb:    (keys + i).initialize(to: k)<br>./stdlib/public/core/HashedCollections.swift.gyb:    (keys + toEntryAt).initialize(to: (from.keys + at).move())<br>./stdlib/public/core/HashedCollections.swift.gyb:    (keys + i).initialize(to: k)<br>./stdlib/public/core/HashedCollections.swift.gyb:    (values + i).initialize(to: v)<br>./stdlib/public/core/HashedCollections.swift.gyb:    (keys + toEntryAt).initialize(to: (from.keys + at).move())<br>./stdlib/public/core/HashedCollections.swift.gyb:    (values + toEntryAt).initialize(to: (from.values + at).move())<br>./stdlib/public/core/ReflectionLegacy.swift:  out.initialize(to: String(reflecting: x))<br><br>./stdlib/public/core/ManagedBuffer.swift:    p.headerAddress.initialize(to: initHeaderVal)<br>./stdlib/public/core/ManagedBuffer.swift:      $0.initialize(to: <br>./stdlib/public/core/ArrayBufferProtocol.swift:        (elements + j).initialize(to: newValues[i])<br>./stdlib/public/core/Sequence.swift:        ptr.initialize(to: x)<br>./stdlib/public/core/HeapBuffer.swift:      $0.initialize(to: Header(initializer))<br>./stdlib/public/core/UnsafeBitMap.swift:    values.initialize(to: 0, count: numberOfWords)<br>./stdlib/public/core/String.swift:    resultStorage.initialize(to: <br>./test/api-digester/stdlib-stable.json:          &quot;printedName&quot;: &quot;initialize(to:count:)&quot;,<br>./test/Generics/slice_test.swift:        (newbase + i).initialize(to: (base+i).move())<br>./test/Generics/slice_test.swift:    (base+length).initialize(to: elem)<br>./test/Parse/pointer_conversion.swift.gyb:  p.initialize(to: t)<br><br>./test/stdlib/Reflection.swift:sanePointerString.initialize(to: &quot;Hello panda&quot;)<br><br>./test/stdlib/Builtins.swift:  (buf + 0).initialize(to: value)<br>./test/stdlib/Builtins.swift:  (buf + 1).initialize(to: value)<br>./test/stdlib/Renames.swift:  x.initialize(e) // expected-error {{&#39;initialize&#39; has been renamed to &#39;initialize(to:)&#39;}} {{5-15=initialize}} {{16-16=to: }} {{none}}<br>./test/stdlib/Renames.swift:  x.initialize(with: e) // expected-error {{&#39;initialize(with:count:)&#39; has been renamed to &#39;initialize(to:count:)&#39;}} {{5-15=initialize}} {{16-20=to}} {{none}}<br>./test/stdlib/Renames.swift:  ptr1.initialize(with: e, count: 1) // expected-error {{&#39;initialize(with:count:)&#39; has been renamed to &#39;initialize(to:count:)&#39;}} {{8-18=initialize}} {{19-23=to}} {{none}}<br>./test/Sanitizers/asan.swift:a.initialize(to: 5)<br>./validation-test/stdlib/UnsafeBufferPointer.swift.gyb:  allocated.initialize(to: 1.0, count: count)<br>./validation-test/stdlib/UnsafeBufferPointer.swift.gyb:  allocated.initialize(to: 1.0, count: count)<br>./validation-test/stdlib/StringSlicesConcurrentAppend.swift:  barrierVar!.initialize(to: _stdlib_pthread_barrier_t())<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (_keyVector(layout: layout) + keyCount).initialize(to: key)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (_valueVector(layout: layout) + keyCount).initialize(to: value)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (_valueArray + i).initialize(to: value)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    keyArray.initialize(to: key0)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (keyArray + 1).initialize(to: key1)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    valueArray.initialize(to: value0)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (valueArray + 1).initialize(to: value1)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (_keyArray + i).initialize(to: key)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (_valueArray(layout: layout) + i).initialize(to: value)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (keyArray + layout.keyCount - 1).initialize(to: appendKey)<br>./validation-test/stdlib/Prototypes/PersistentVector.swift.gyb:    (valueArray + layout.keyCount - 1).initialize(to: appendValue)<br>./validation-test/compiler_crashers_2_fixed/0004-rdar20564605.swift:      p.initialize(to: element)<br>./validation-test/compiler_crashers_2_fixed/0003-rdar20564378.swift:      p.initialize(to: element)<br>./validation-test/compiler_crashers_2_fixed/0006-rdar20588474.swift:      p.initialize(to: element)<br>./validation-test/compiler_crashers_2_fixed/0010-rdar20638881.swift:      p.initialize(to: element)<br></span></font><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 18, 2017 at 4:33 PM, Andrew Trick <span dir="ltr">&lt;<a href="mailto:atrick@apple.com" target="_blank">atrick@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Jul 18, 2017, at 11:36 AM, Taylor Swift &lt;<a href="mailto:kelvin13ma@gmail.com" target="_blank">kelvin13ma@gmail.com</a>&gt; wrote:</div><br class="m_-907934889053787745Apple-interchange-newline"><div><blockquote class="gmail_quote" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div>&gt; fix the ordering of the arguments in initializeMemory&lt;Element&gt;(as:a<wbr>t:count:to:)</div><div><br></div><div>I think this ordering was an attempt to avoid confusion with binding</div><div>memory where `to` refers to a type. However, it should be consistent</div><div>with `UnsafePointer.initialize`, so we need to pick one of those to</div><div>change.</div></div></blockquote><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">This would be a non-issue had we just been consistent with the rest of the stdlib and named this argument `<span style="font-family:monospace,monospace">repeating:</span>` instead of `<span style="font-family:monospace,monospace">to:</span>`. But `<span style="font-family:monospace,monospace">ptr.initialize(repeating: 255, count: 100)</span>` doesn’t read quite as naturally in English as `<span style="font-family:monospace,monospace">ptr.initialize(to: 255, count: 100)</span>` which is why I left this idea out of the proposal. Now that you mention the problem with `<span style="font-family:monospace,monospace">initializeMemory&lt;Element&gt;(as:</span><span style="font-family:monospace,monospace"><wbr>at:count:to:)</span>`, it might be a good idea to add this rename back into it.</div></div></blockquote></div><br></span><div>I think `repeating` is much more clear.</div><div><br></div><div>-Andy</div></div></blockquote></div><br></div>