Skip to content

GeneralUtilities #402

Open
Open
@maxitg

Description

@maxitg

The problem

The build-in GeneralUtilities package seems to have a lot of useful functionality, and we don't currently use it in SetReplace. If we can be reasonably sure that it's not going to break in the future Wolfram Language version, we should start using it.

  • Add GeneralUtilities dependency.

Examples

Some examples where it can be useful (feel free to add more):

Scope (and ModuleScope)

Scope allows one to have local variables (like Block or Module). However, it detects them automatically (at definition time), so that they don't have to be manually tracked. This will reduce potential mistakes due to the mismatch of lists of Module variables, and will make the code simpler. This will eliminate the need for a linter to do that.

KeyAddTo (and KeyUnionTo, KeyPrependTo, KeyAppendTo, KeyJoinTo)

KeyAddTo assumes a default value of 0 for non-existing keys, and will also return the new value.
It is useful, for example, in deleteFromVertexIndex in setSubstitutionSystem$wl.m, where the Scan function can simply be replaced with

If[KeyAddTo[index, #, -1] === 0, index[#] =. ] 
  • Add KeyAddTo where relevant.

SetUsage

SetUsage has significantly more features than usageString, see ? SetUsage.

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is neededrefactorDoes not change functionality, but makes the code better organized or more readablewolfram languageRequires Wolfram Language implementation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions