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 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.
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
Podporu pro své první kroky v prostředí Coconut naleznete na těchto odkazech:
Poznámka: Pokud výše uvedené linky nechodí, zkuste mirror.