- Wikipedia: Programming Paradigms
- Basic Language Comparison : Basic Comparison of Various Computing Languages, eg. Python, Julia, Matlab, IDL, R, Java, Scala, C, Fortran.
- Programming Language Theory
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
-
-
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
@matchmacro.
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
- DesignByContract.jl : an interface for Design By Contract programming in Julia. See also Eiffel, which first introduced Design By Contract programming.
Interpreters
- JuliaInterpreter.jl : Interpreter for Julia code.
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
forloops.
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
- Wikipedia: Polymorphism and Holy Traits pattern.
- The Design Impact of Multiple Dispatch presented by StefanKarpinski at Strange Loop on 19-Sep-2013.
- JuliaCon 2019: The Unreasonable Effectiveness of Multiple Dispatch by Stefan Karpinski
- 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
- FuzzyLogic.jl : Julia package for fuzzy inference. Julia Con 2023 video