What syntax would you propose?
I would suggest a familiar notation like "[a, b] -> c" in a dedicated dag block:
dag text_stats {
tee -> [ split_words, count_chars ]
# word-based frequencies
split_words -> tee_words
tee_words -> ngram2 -> save_digram
tee_words -> ngram3 -> save_trigram
tee_words -> ranked_frequency -> save_words
# character-based frequencies
count_chars -> add_percentage
chars_to_lines -> ranked_frequency -> add_percentage -> save_chars
}
run text_stats < input.txt
https://www2.dmst.aueb.gr/dds/sw/dgsh/#text-propertiesor
dag commit_graph {
git_log -> filter_recent -> sort -n -> [ uniq_committers, sort_by_email ]
uniq_committers -> [ last_commit, first_commit, committer_positions ]
[ last_commit, first_commit ] -> cat -> tr '\n' ' ' -> days_between
[ committer_positions, sort_by_email ] -> join_by_email -> sort -k2n -> [ make_bitmap_header, plot_per_day ]
[ uniq_committers, days_between ] -> emit_dims -> plot_per_day
make_bitmap_header -> cat
plot_per_day -> morphconv -> [ to_png_large, to_png_small ]
}
run commit_graph
https://www2.dmst.aueb.gr/dds/sw/dgsh/#committer-plotThe translations above are computer-assisted and may contain mistakes, but you get the idea.
git_log() {
git log --pretty=tformat:'%at %ae'
}
Separating function definitions allows you to run, test, and re-use them.having dgsh output a graphvis file in dry-run mode would be a neat feature.
I’m on my phone at the moment and cooking so cannot type any examples, but if I get time, I’ll throw together some comparisons later tonight
However Murex does support CSP-style concurrency. So while there’s no syntax sugar for writing graphs, you can very easily create adhoc pipes and pass them around instead of using stdout / stderr.
So it wouldn’t actually take much to refine that with some DAG-friendly syntax.
In fact maybe that can be my next project…
Looking properly at this, I can see no iteration is needed. Which actually makes the Murex implementation even easier because Murex already has tee pipes just like dgsh. It’s just not (yet) particularly well documented.
Stay tuned though, What I’m going to do is write a blog post about it. It’s an interesting enough topic to deserve one