Re:Show HN: gq – like jq or zq, but you use Go
by throwaway894345 on Wednesday April 27, 2022 @03:30PM
(#31184675)
I like jq, but the parent is right that it's hard to wrap one's head around the way jq thinks about things and how that model maps to its grammar. Even in this example, I couldn't tell you why `map()` wraps everything else, and I always get tripped up on when to use `|` or how to go back and forth between a list and a stream. I don't think the answer is `gq`, but I certainly understand why people try out other languages.
[ Parent
| on HN ]
Re:Show HN: gq – like jq or zq, but you use Go
by nh23423fefe on Wednesday April 27, 2022 @04:33PM
(#31185399)
every filter operates on its input. in this case the input was an array.
every map implementation ive seen has type function(a,b) -> list(a) -> list(b)
select(contains("good/")) is a function from string -> string|void
so map plus a voidable function equals a filter
| just means connect 2 filters
if you have a stream you turn it into a array with the array constructor []
if you have an array you turn it into a stream with the producer operator .[]
the api is super orthogonal and well designed. but you do have to understand the model
Re:Show HN: gq – like jq or zq, but you use Go
by throwaway894345 on Wednesday April 27, 2022 @06:44PM
(#31186760)
Right, I already believe it all makes sense when you understand the model, but the model isn't super obvious and I often find myself Googling things for reference because I don't use it very often; however, I do use regular programming languages and I can reason about those more easily (although while I like Go, I would be more inclined to used a Python- or JS-like language for something like this).