Coconut

Coconut (coconut-lang.org) je varianta jazyka Python, která k syntaxi Pythonu přidává nové vlastnosti pro jednoduché a elegantní Pythonické funkcionální programování.

Coconut je vyvíjen na GitHub a hostován na PyPI.

Instalace

Instalace Coconut je stejně snadná jako otevření konzoly s promptem a zadání:

pip install coconut

načež máte celý svět Coconut u svých nohou.

Ukázky kódu

Usměrnění programu (pipeline-style programming):

"hello, world!" |> print

Pohlednější lambda:

(x) -> x ** 2

Částečná aplikace (partial application):

range(10) |> map$((x) -> x ** 2) |> list

Porovnání předlohy (pattern-matching):

match [head] + tail in [0, 1, 2, 3]:
    print(head, tail)

Rozložené přiřazení (destructuring assignment):

{"list": [0] + rest} = {"list": [0, 1, 2, 3]}

Infixová notace:

5 `mod` 3 == 2

Operátorové funkce:

range(15) |> map$((*)$(2)) |> list

Kompozice funkcí:

(f .. g .. h)(x, y, z)

Líné seznamy:

(| first_elem() |) :: rest_elems()

Paralelní programování:

range(100) |> parallel_map$((**)$(2)) |> list

Optimalizace koncové rekurze:

def factorial(n, acc=1):
    case n:
        match 0:
            return acc
        match _ is int if n > 0:
            return factorial(n-1, acc*n)
    else:
        raise TypeError("the argument to factorial must be an integer >= 0")

Algebraické datové typy:

data Empty()
data Leaf(n)
data Node(l, r)

def size(Empty()) = 0

@addpattern(size)
def size(Leaf(n)) = 1

@addpattern(size)
def size(Node(l, r)) = size(l) + size(r)

size(Node(Empty(), Leaf(10))) == 1

Užitečné odkazy

Podporu pro své první kroky v prostředí Coconut naleznete na těchto odkazech:

  • Coconut
  • Tutoriál: Dobrým výchozím bodem pro začátečníka v Coconut je jeho tutorial s případovými studiemi.
  • Dokumentace: Hledáte-li informaci o konkretní entitě, zkuste referenční dokumentaci jazyka Coconut.
  • FAQ: Chcete-li se zeptat, pro koho je Coconut určen a zda byste jej měl používat, navštivte Frequently Asked Questions .
  • Create a New Issue: If you’re having a problem with Coconut, creating a new issue detailing the problem will allow it to be addressed as soon as possible.
  • Gitter: For any questions, concerns, or comments about anything Coconut-related, ask around at Coconut’s Gitter, a GitHub-integrated chat room for Coconut developers.

Poznámka: Pokud výše uvedené linky nechodí, zkuste mirror.