Thread overview
Lazy Range of Graph Links
Feb 16, 2016
Nordlöw
Feb 16, 2016
Andrea Fontana
Feb 16, 2016
Nordlöw
February 16, 2016
In my knowledge hypergraph I currently have a

struct Path
{
    Node start;
    Step[] steps;
}

struct Step
{
    Fact fact;
    Node node;
}

where Node and Fact a reference types (class).

I now want to implement

auto byLink(Path path);

so that it returns a lazy range of Links where

struct Link
{
    Node source;
    Fact fact;
    Node destination;
}

In other Words, if I have a Path instance describing

N1 >=F1=> N2 >=F2=> N3

where

start: F1

and

steps: [(F1, N2), (F2, N3)]

I want byLink to return

[(N1, F1, N2), (N2, F2, N3)]

How do accomplish this?

I'm guessing std.range.zip should play a role here.
February 16, 2016
On Tuesday, 16 February 2016 at 08:04:29 UTC, Nordlöw wrote:
> In my knowledge hypergraph I currently have a
>
> struct Path
> {
>     Node start;
>     Step[] steps;
> }
>
> struct Step
> {
>     Fact fact;
>     Node node;
> }
>
> where Node and Fact a reference types (class).
>
> I now want to implement
>
> auto byLink(Path path);
>
> so that it returns a lazy range of Links where
>
> struct Link
> {
>     Node source;
>     Fact fact;
>     Node destination;
> }
>
> In other Words, if I have a Path instance describing
>
> N1 >=F1=> N2 >=F2=> N3
>
> where
>
> start: F1
>
> and
>
> steps: [(F1, N2), (F2, N3)]
>
> I want byLink to return
>
> [(N1, F1, N2), (N2, F2, N3)]
>
> How do accomplish this?
>
> I'm guessing std.range.zip should play a role here.

Something like this:

http://dpaste.dzfl.pl/de73cb4e7ac0

?
February 16, 2016
On Tuesday, 16 February 2016 at 08:45:42 UTC, Andrea Fontana wrote:
> Something like this:
>
> http://dpaste.dzfl.pl/de73cb4e7ac0
>
> ?

Thanks.

Note that this can be simplified by using a variadic version of zip...