Automata


  • Automa.jl : A julia code generator for regular expressions - this package can do text validation, parsing, and tokenizing based on state machine compiler.
  • CodeTracking.jl : An extension of Julia’s InteractiveUtils library that provides an interface for obtaining strings and expressions of method definitions, method signatures, etc.. designed to work with Revise.jl (for versions v1.1.0 and higher).

Control Flow


  • IterTools.jl : Common functional iterator patterns.
  • LinearControl.jl : Julia package for analysis and design of control strategies for linear systems.
  • ProtoBuf.jl : A Julia implementation for protocol buffers, a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.

Reversible programming


  • NiLang.jl : a reversible domain-specific language (DSL). Every state change can be undone.

Functional Programming


  • Chain.jl : A Julia package for piping a value through a series of transformation expressions using a convenient syntax.
  • Lazy.jl : Functional programming for Julia with lazily-evaluated lists and a large library of functions for working with them.
  • LispSyntax.jl : lisp-like language in julia. LispREPL.jl : REPL for LispSyntax.jl.
  • Monads.jl : Monadic expressions and sequences for Julia. hSee the doc.
  • Pipe.jl : Improved function piping in Julia.

Pattern matching

  • Wikipedia pattern matching


  • Glob.jl : POSIX-compliant file name pattern matching.

  • Match.jl : Advanced Pattern Matching for Julia.

  • MLStyle.jl : Julia functional programming infrastructures and metaprogramming facilities.

  • Moshi.jl : Generic Algebraic Data Type + Pattern Match.

  • SimpleMatch.jl : a simple Julia pattern matching package providing only the @match macro.

Reactive Programming

Wikipedia: Reactive Programming

  • Rocket.jl : A functional reactive programming extensions library for Julia.
  • Reactive.jl : A package for reactive programming in Julia.

Design by contract

Wikipedia: Design by contract

  • DesignByContract.jl : an interface for Design By Contract programming in Julia. See also Eiffel, which first introduced Design By Contract programming.

Interpreters

Wikipedia: Interpreters

Macro and Metaprogramming


  • ForceImport.jl : Macro that force imports conflicting methods in Julia modules.
  • MacroTools.jl : A library providing helpful tools for writing macros, notably a very simple templating system with some functions.
  • SyntaxTree.jl : Toolset for modifying Julia AST and characteristic values.
  • Unroll.jl : A Julia macro for unrolling conditional for loops.

Automatic Programming

Wikipedia: Automatic Programming

  • Cassette.jl : a Julia package that provides a mechanism for dynamically injecting code transformation passes into Julia’s just-in-time (JIT) compilation cycle, enabling post hoc analysis, optimization, and modification of “Cassette-unaware” Julia programs.
  • IRTools.jl : Intermediate Representation toolkit to provide a simple and flexible IR format, expressive enough to work with both lowered and typed Julia code, as well as external IRs. It can be used with Julia metaprogramming tools such as Cassette.
  • Reactant.jl : Optimize Julia Functions With MLIR and XLA for High-Performance Execution on CPU, GPU, TPU, etc. JuliaCon 2025
  • Revise.jl : Automatically update function definitions in a running Julia session. It will help you keep your sessions running longer, reducing the need to restart Julia whenever you make changes to code.

Polymorphism amd multiple dispatch


  • BinaryTraits.jl : easy-to-use trait library with formal interface specification support.
  • SimpleTraits.jl : Simple Traits for Julia.
  • ValSplit.jl : Compile away dynamic dispatch on Val-typed arguments via value-splitting.
  • WhereTraits.jl : This package exports one powerful macro @traits with which you can extend Julia’s where syntax.

Object-oriented programming (OOP)

  • MultipleInterfaces.jl : a powerful way to define and work with interfaces in Julia. With MultipleInterfaces.jl you can declare an interface that is defined by a list of required methods, and you can declare which types implement that interface. Interfaces support multiple inheritance, interface intersection, and multiple dispatch. And all with no runtime cost. JuliaCon 2025 video
  • ObjectOriented.jl : Conventional object-oriented programming in Julia without breaking Julia’s core design ideas. We recommend you to read How to Translate OOP into Idiomatic Julia before using this package.

Fuzzy Logic

Wikipedia: Fuzzy logic