Skip to content

tmbb/elixir_dark_kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DarkKernel

Elixir functions which work using dark magic.

Installation

If available in Hex, the package can be installed by adding dark_kernel to your list of dependencies in mix.exs:

def deps do
  [
    {:dark_kernel, "~> 0.1.0"}
  ]
end

Howto

Dark keyword lists

Dark keyword lists, the simplest form:

import DarkKernel

opts = [a: 1, b: 2, c: 3]
~k[a, b, c, d = opts]

assert a == 1
assert b == 2
assert c == 3
assert d == nil

Dark keyword lists with constant defaults:

import DarkKernel

opts = [a: 1, b: 2]
~k[a, b, c: "a string", d: :an_atom, e: 42, f = opts]

assert a == 1
assert b == 2
assert c == "a string"
assert d == :an_atom
assert e == 42
assert f == nil

Dark keyword lists with defaults which are arbitrary expressions:

import DarkKernel

opts = [a: 1, b: 2]
~k[a, b, c: 1 + 2, d: :rand.uniform(), e: 3.14 + :rand.uniform() = opts]

assert a == 1
assert b == 2
assert c == 3
assert is_float(d)
assert is_float(e)

Dark maps

Dark maps are currently implemented using ShorterMaps. Due to dificulties of using a macro inside another macro, and because I wanted all sigils to be importable from the same module, dark_kernel embeds the source code of ShorterMaps.

In the (near) future, dark_kernel will support more advanced pattern matching capabilities for dark maps.

About

Elixir functions that use dark magic

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages