README.md

Curry
=====

Curry allows you to define curried functions :

```elixir
defmodule Curry.Example do

  # 1. Use the Curry module
  use Curry

  # 2. use 'curry' instead of 'def' to define functions
  curry add(a,b), do: a + b

  # also, use 'curryp' instead of 'defp'
  curryp secret(replaced, by, sentence) do
    sentence |> String.replace(replaced, by)
  end

  def test do
    # 3. The first call is not 'dotted'
    increment = add(1)

    # 4. The following calls are 'dotted'
    100 = increment.(99)

    encoder = secret("o").("_")
    "hell_" = encoder.("hello")
  end

end
```

TODO:
 * functions guards
 * first call dotted ?
 * possibility to add more than one argument on first call
 * … on any call ?
 * more tests
 * …