Thread overview
Lazy std.algorithm.replace()
Nov 01, 2015
Nordlöw
Nov 02, 2015
Nordlöw
Nov 02, 2015
Ali Çehreli
Nov 02, 2015
Nordlöw
Nov 07, 2015
Nordlöw
Nov 02, 2015
Adam D. Ruppe
Nov 02, 2015
Nordlöw
November 01, 2015
Is there a reason why Phobos doesn't contain a lazy range variant of std.string.replace?
November 02, 2015
On Sunday, 1 November 2015 at 14:26:21 UTC, Nordlöw wrote:
> Is there a reason why Phobos doesn't contain a lazy range variant of std.string.replace?

Ping.
November 02, 2015
On 11/02/2015 04:22 AM, Nordlöw wrote:
> On Sunday, 1 November 2015 at 14:26:21 UTC, Nordlöw wrote:
>> Is there a reason why Phobos doesn't contain a lazy range variant of
>> std.string.replace?
>
> Ping.

What is the use case?

The implementation doesn't seem trivial to me as it needs to maintain an internal buffer as large as the 'to' argument to do the mutation in.

Ali

November 02, 2015
On Monday, 2 November 2015 at 19:53:09 UTC, Ali Çehreli wrote:
> On 11/02/2015 04:22 AM, Nordlöw wrote:
>> On Sunday, 1 November 2015 at 14:26:21 UTC, Nordlöw wrote:
>>> Is there a reason why Phobos doesn't contain a lazy range variant of
>>> std.string.replace?
>>
>> Ping.
>
> What is the use case?

Chaining replacement with other filterings. I need in my knowledge database (graph) i building...which a *lot* of string processing.

> The implementation doesn't seem trivial to me as it needs to maintain an internal buffer as large as the 'to' argument to do the mutation in.
>
> Ali

I'm aware of that.

I'm done with the easy cases at

https://github.com/nordlow/justd/blob/master/algorithm_ex.d#L1946

and

https://github.com/nordlow/justd/blob/master/algorithm_ex.d#L1997

I'm planning to implement the most generic version where `haystack` and keys are both ranges by reusing  std.algorithm : find`. Do you have any more advice on that overload?
November 02, 2015
On Sunday, 1 November 2015 at 14:26:21 UTC, Nordlöw wrote:
> Is there a reason why Phobos doesn't contain a lazy range variant of std.string.replace?

Would something like map work with the predicate being if(matches_needle) return replacement; else return original; ?
November 02, 2015
On Monday, 2 November 2015 at 20:25:44 UTC, Adam D. Ruppe wrote:
> On Sunday, 1 November 2015 at 14:26:21 UTC, Nordlöw wrote:
>> Is there a reason why Phobos doesn't contain a lazy range variant of std.string.replace?
>
> Would something like map work with the predicate being if(matches_needle) return replacement; else return original; ?

I'm already using `map` in the simple overloads (Range haystack, ElementType needle) mentioned in my previous post.
November 07, 2015
On Monday, 2 November 2015 at 20:22:11 UTC, Nordlöw wrote:
> I'm done with the easy cases at
>
> https://github.com/nordlow/justd/blob/master/algorithm_ex.d#L1946
>
> and
>
> https://github.com/nordlow/justd/blob/master/algorithm_ex.d#L1997

Moved stuff to

https://github.com/nordlow/justd/blob/master/replacing.d

for now.