I’m thinking of a curated list of packages, that (almost) all can agree on, to bring up to syntax-parity with e.g. Python (which has e.g. pattern matching), and so new users do not have to discover these packages for themselves. I’m not thinking of packages, such as Revise.jl, here, only helping development, but those for all to use at runtime, even hopefully in short-running scripts.
I’m ok with the package having some breaking changes, i.e. from the Julia 2.0 milestone. I’m thinking it would imply similar to Python’s from __future__ import
, for all the stuff all can agree on anyway, thus an opt-in way to prepare for Julia 2.0 (the package would work identically in 1.x and 2.x).
Alternatively, the package could be a simple meta-package, only containing one long using
statment, not adding (or dropping) 2.0 stuff, or messing with the included packages.
It’s likely a requirement the packages be at 1.0+, so e.g. DataStructures.jl is out (also not clear it should be on the list, anyway). I feel however justified that OrderedCollections.jl should be there for OrderedDict (Python’s, by now, default for their dictionaries).
This idea is sparked by e.g. most recently announced:
@fredrikekre With it a drop-in replacement for @enum
and better, people shouldn’t have to search for alternative (or missing) “syntax”, already there in Julia. I don’t really know it that package could have overridden @enum
in Base with its implementation. Even though that package doesn’t, Julia2.jl could. I’m not a huge fan of Julia codebases having inconsistencies, some using @enumx
or other alternatives that exist, to stuff already in Julia (my exception is for Dict
, but about semantics, not syntax).
For some reason the code is shorter at 165 lines than the code in Base at 225 lines: https://github.com/JuliaLang/julia/blob/master/base/Enums.jl
If we can actually redefine what Base gives you then I (maybe controversially) suggest:
const Dict = OrderedDict
const UDict = Base.Dict # shorter than having to type UnorderedDict
My short-list of packages to include (what more?):
- Match.jl
- OrderedCollections.jl
- EnumX.jl
See also my older (most answers where on development packages, or e.g. CSV.jl that not all would use, and is too heavy to include):
Could we also remove stuff from Julia in this package?
I’m thinking of from 2.0 milestone:
stop exporting HTML and Text from Base · Issue #29841 · JuliaLang/julia · GitHub and deprecate <<, >>, >>> on BitArray · Issue #30958 · JuliaLang/julia · GitHub
Even though I wish possible, some (parser) things can’t be changed(?) in a package: Parse 1 + 2 + 3 as +(1, +(2, 3)) · Issue #34999 · JuliaLang/julia · GitHub and .|> should have lower precedence than -> · Issue #38761 · JuliaLang/julia · GitHub