nihongo VS filter

Compare nihongo vs filter and see what are their differences.

filter

Simple apply/filter/reduce package. (by robpike)
Our great sponsors
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
nihongo filter
1 15
90 737
- -
10.0 0.6
over 2 years ago over 1 year ago
Go Go
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

nihongo

Posts with mentions or reviews of nihongo. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-21.

filter

Posts with mentions or reviews of filter. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-13.
  • Supporting the Use of Rust in the Chromium Project
    11 projects | reddit.com/r/rust | 13 Jan 2023
    I mean sure, let's praise the ergonomics of channels and the reliability of maps. As for datastructures, we already have datastructures at home . They just work fine. Nobody needs more than that because rob pike told us so
  • Why isn’t Go used in AI/ML?
    8 projects | reddit.com/r/golang | 23 Dec 2022
    Go will never have a map/filter syntax, to the point rob pike even makes fun of it , do you really want to use it for that kind of domain ?
  • State of Rust for web backends
    11 projects | reddit.com/r/rust | 20 Dec 2022
    Also since generators are mentioned I recently came across this rob pike moment, he implemented a reduce function that takes and returns all interface{} types and uses reflection to check if the call is valid at runtime - that's the most typical Go that can ever be written in 40 lines - all that to make the point that it's useless. Such a great spirit. https://github.com/robpike/filter
  • Go 1.21 may have a clear(x) builtin and there's an interesting reason why
    2 projects | reddit.com/r/programmingcirclejerk | 21 Nov 2022
  • What necessary packages or functions that Go doesn't have?
    6 projects | reddit.com/r/golang | 4 Nov 2022
  • Golang is so fun to write
    3 projects | reddit.com/r/golang | 21 Oct 2022
    A few points that stood out to me: error handling in Go is generally pretty good. It's much more performant compared to throwing exceptions and the high frequency of error handling helps a lot with debugging and avoiding unexpected errors. What you've described as "poor OOP'ish" is partly true, yes Go does poor OOP, because it doesn't try to do OOP. The language favours composition over inheritance. Strongly applying OOP concepts in Go is simply not using the language in its intended way. For implicit interfaces, it's completely fair that you don't like them, but it's not a disadvantage of the language. I for one find implicit interfaces very intuitive and feel it's the right way for it to be done. No function overloading and lack of ternary operations is absolutely intentional, both of these are overcome by writing more expressive code, which is not a bad thing. Similarly with no built in map/filter/find, these can be achieved using for-loops. Reference https://github.com/robpike/filter for Rob Pike's implementation of filter, stating in the readme that there's not much use for it and to just use for-loops instead. Last thing, enums are expressed using iota: https://go.dev/ref/spec#Iota
  • Lies we tell ourselves to keep using Golang
    7 projects | news.ycombinator.com | 29 Apr 2022
    > I didn't get that desire for purity that you gleaned from it.

    'Folks who develop an allergic reaction to "big balls of mutable state without sum types" tend to gravitate towards languages that gives them control over mutability, lifetimes, and lets them build abstractions.'

    This mutability argument is present throughout the article. Seems like nothing sans Rust or niche functional languages is enough.

    > Nil pointer exceptions, for example, don't have to exist anymore..

    The language most notorious for those is Java due to almost everything being passed via a nullable reference. When everything can be nullable, how can you know where to check for it? Go addresses this to an extent by explicitly separating pointers from values. Values are the default and cannot be nil, so the opportunity for null dereferences is greatly diminished. It's not a perfect solution, but it's not nothing either.

    > and yet they do in Go because they couldn't be bothered to add sum types.

    Damn those lazy Go devs!

    > Its type system is barely a step above a dynamic language.

    Turns out even a basic type system is a huge improvement over none. Just being able to restrict values to concrete types goes a long way.

    > You have to write the same imperative looping code over and over because Rob Pike would rather just use a for loop than something mildly expressive like map or filter (https://github.com/robpike/filter).

    There are arguments to be made either way, but I definitely agree generics (along with iterators) should have been there since day 1.

    > Every function that does meaningful work is littered with if err != nil { return err }.

    One big positive of this that I don't see in other languages is every `return` in a function must be on the start of a line. That is, every single exit path of a function is easily findable by visually scanning

    7 projects | news.ycombinator.com | 29 Apr 2022
    I didn't get that desire for purity that you gleaned from it.

    The fact is (as the author pointed out) Golang is missing basic language features that other languages have adopted since the creation of C that eliminate whole classes of errors, and it's pretty easy to accidentally do the wrong thing.

    Nil pointer exceptions, for example, don't have to exist anymore.. and yet they do in Go because they couldn't be bothered to add sum types. Its type system is as barebones as it can get. You have to write the same imperative looping code over and over because Rob Pike would rather just use a for loop than something like map / filter (https://github.com/robpike/filter). Every function that does meaningful work is littered with if err != nil { return err }.

    It's easy to write code in Go, but it's not easy to write a maintainable, production grade system with any amount of complexity, because you have to be careful, you can't encode invariants explicitly and let the compiler find problems for you, and you have to repeat yourself so often.

  • remove element from a slice
    2 projects | reddit.com/r/golang | 24 Jan 2022
    See https://github.com/robpike/filter specifically apply.go. Also note this from the Readme: "Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops.
  • To learn Go Generics I created a small library of useful collection functions that I find myself re-writing semi often
    2 projects | reddit.com/r/golang | 18 Jan 2022
    I had a quick look and the slices isn't very Go. Rob Pike implemented something similar a while ago actually https://github.com/robpike/filter and he says "Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops. You shouldn't use it either." Using for loops instead of map/filter/etc. is simpler and less harmful.

What are some alternatives?

When comparing nihongo and filter you can also consider the following projects:

Weaviate - Weaviate is an open source vector search engine that stores both objects and vectors, allowing for combining vector search with structured filtering with the fault-tolerance and scalability of a cloud-native database, all accessible through GraphQL, REST, and various language clients.

ply - Painless polymorphism

datastation - App to easily query, script, and visualize data from every database, file, and API.

go-collections - Generic utility functions for dealing with collections in go

go-funk - A modern Go utility library which provides helpers (map, find, contains, filter, ...)