All Projects → thautwarm → Mlstyle.jl

thautwarm / Mlstyle.jl

Licence: mit
Julia functional programming infrastructures and metaprogramming facilities

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Mlstyle.jl

Whyhaskellmatters
In this article I try to explain why Haskell keeps being such an important language by presenting some of its most important and distinguishing features and detailing them with working code examples. The presentation aims to be self-contained and does not require any previous knowledge of the language.
Stars: ✭ 418 (+87.44%)
Mutual labels:  pattern-matching, algebraic-data-types
Poica
🧮 A research programming language on top of C macros
Stars: ✭ 231 (+3.59%)
Mutual labels:  pattern-matching, algebraic-data-types
Mach7
Functional programming style pattern-matching library for C++
Stars: ✭ 1,151 (+416.14%)
Mutual labels:  pattern-matching, algebraic-data-types
typy
A fragmentary bidirectional type system as a Python library
Stars: ✭ 51 (-77.13%)
Mutual labels:  pattern-matching, algebraic-data-types
Expat
Reusable, composable patterns across Elixir libraries
Stars: ✭ 157 (-29.6%)
Mutual labels:  pattern-matching, algebraic-data-types
Fluture
🦋 Fantasy Land compliant (monadic) alternative to Promises
Stars: ✭ 2,249 (+908.52%)
Mutual labels:  algebraic-data-types
Barrel Platform
Distributed database for the modern world
Stars: ✭ 201 (-9.87%)
Mutual labels:  scalability
Cote
A Node.js library for building zero-configuration microservices.
Stars: ✭ 2,180 (+877.58%)
Mutual labels:  scalability
Fpgo
Monad, Functional Programming features for Golang
Stars: ✭ 165 (-26.01%)
Mutual labels:  pattern-matching
Patty
A pattern matching library for Nim
Stars: ✭ 214 (-4.04%)
Mutual labels:  pattern-matching
Mgodatagen
Generate random data for MongoDB
Stars: ✭ 206 (-7.62%)
Mutual labels:  scalability
Usl4j
A reasonably complete implementation of the Universal Scalability Law model.
Stars: ✭ 194 (-13%)
Mutual labels:  scalability
Sparse Evolutionary Artificial Neural Networks
Always sparse. Never dense. But never say never. A repository for the Adaptive Sparse Connectivity concept and its algorithmic instantiation, i.e. Sparse Evolutionary Training, to boost Deep Learning scalability on various aspects (e.g. memory and computational time efficiency, representation and generalization power).
Stars: ✭ 182 (-18.39%)
Mutual labels:  scalability
Hexraystoolbox
Hexrays Toolbox - Find code patterns within the Hexrays AST
Stars: ✭ 202 (-9.42%)
Mutual labels:  pattern-matching
Akar
First-class patterns for Clojure. Made with love, functions, and just the right amount of syntax.
Stars: ✭ 176 (-21.08%)
Mutual labels:  pattern-matching
Trivia
Pattern Matcher Compatible with Optima
Stars: ✭ 210 (-5.83%)
Mutual labels:  pattern-matching
Symja android library
☕️ Symja - computer algebra language & symbolic math library. A collection of popular algorithms implemented in pure Java.
Stars: ✭ 170 (-23.77%)
Mutual labels:  pattern-matching
Swift Enum Properties
🤝 Struct and enum data access in harmony.
Stars: ✭ 191 (-14.35%)
Mutual labels:  algebraic-data-types
Axonframework
Framework for Evolutionary Event-Driven Microservices on the JVM
Stars: ✭ 2,558 (+1047.09%)
Mutual labels:  scalability
Symbolicutils.jl
Expression rewriting and simplification
Stars: ✭ 189 (-15.25%)
Mutual labels:  pattern-matching

MLStyle.jl

CI codecov License Docs Join the chat at https://gitter.im/MLStyle-jl/community

Providing intuitive, fast, consistent and extensible functional programming infrastructures, and metaprogramming facilities.

Check everything in the documentation website.

Preview

using MLStyle

@data Shape begin # Define an algebraic data type Shape
    Rock
    Paper
    Scissors
end

# Determine who wins a game of rock paper scissors with pattern matching
play(a::Shape, b::Shape) = @match (a, b) begin
    (Paper,    Rock)      => "Paper Wins!";
    (Rock,     Scissors)  => "Rock Wins!";
    (Scissors, Paper)     => "Scissors Wins!";
    (a, b)                => a == b ? "Tie!" : play(b, a)
end

P.S: When preferring you need this to pattern match on Julia [email protected].

Benchmarks

Arrays

matrix-benchmark/bench-array.jl

Tuples

matrix-benchmark/bench-tuple.jl

Data Types

matrix-benchmark/bench-datatype.jl

Extracting Struct Definitions

matrix-benchmark/bench-structfields.jl

Misc

matrix-benchmark/bench-misc.jl

An Example from Match.jl Documentation

matrix-benchmark/bench-versus-match.jl

Acknowledgements

Thanks to all individuals referred in Acknowledgements!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].