www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Lazy std.algorithm.replace()

reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
Is there a reason why Phobos doesn't contain a lazy range variant 
of std.string.replace?
Nov 01 2015
next sibling parent reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
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.
Nov 02 2015
parent reply =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
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
Nov 02 2015
parent reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
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?
Nov 02 2015
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
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.
Nov 07 2015
prev sibling parent reply Adam D. Ruppe <destructionator gmail.com> writes:
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; ?
Nov 02 2015
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
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.
Nov 02 2015