Новый функциональный язык. Полная совместимость с PHP 🚀

Язык Фел

Phel - это язык функционального программирования (FP), который компилируется в PHP. Это диалект Lisp, вдохновленный Clojure и Janet.

Функции

  • Создан на основе экосистемы PHP
  • Хорошая отчетность об ошибках
  • Различные структуры данных (массивы, таблицы и кортежи)
  • Макросы
  • Рекурсивные функции
  • Мощный, но простой синтаксис
  • REPL

Почему Фел?

Фел создан Йенсом Хаасе и, как он упоминает на сайте, является результатом многих« неудачных попыток функционального программирования на PHP ». Он искал что-то с такими характеристиками:

  • LISP-вдохновленный
  • Функциональный язык программирования
  • Это работает на дешевых хостинг-провайдерах
  • И легко писать и отлаживать

С моей точки зрения, это было в конце мая 2020 года, когда я закончил книгу Семь языков за семь недель: прагматическое руководство по изучению языков программирования », в которой я немного выучил Prolog, Erlang, Clojure, Haskell… Я даже создал репозиторий в Github, чтобы хранить свои успехи в течение нескольких недель с этими знаниями.

Внезапно, в начале июня 2020 года, я увидел сообщение на официальном канале PHP Reddit с сообщением о том, что кто-то упоминает этот проект Phel, утверждая, что он функциональный язык программирования, написанный на PHP ! (или что-то подобное).

Я работаю с PHP около 8 лет и всегда стараюсь как можно больше комбинировать ООП с ФП (потому что я считаю, что обе парадигмы лучше комбинировать; они не обязательно являются исключительными), и новый диалект Лиспа, полностью написанный на собственном PHP 7.4, звучал так захватывающе, что я решил взглянуть на него. Я хотел увидеть код.

Свежие чтения из книг Mathias NoBack, таких как Руководство по стилю дизайна объектов, Принципы дизайна упаковки и Расширенная архитектура веб-приложений, придали мне смелости попробовать то, что я узнал, и применить это на практике в реальной жизни. проект. Это было (и остается) прекрасным испытанием, которое помогает мне одновременно проверять себя и расти профессионально.

Моя первая фиксация была сделана 6 июня 2020 года, и с тех пор я немного (почти) каждый день работаю над этим проектом в свободное время. Это помогает мне узнать больше о FP, внутреннем дизайне языков и передовых методах тестирования и архитектуры проектирования программного обеспечения в целом.

Я начал вносить незначительные изменения, пока не закончил рефакторинг всей структуры компилятора (среди прочего), чтобы упростить чтение и понимание модулей. Псалом, строгие типы, хорошее тестовое покрытие, унифицированный стиль кода… Это были одни из моих любимых тем.

Пример кода Phel

Следующий пример дает краткое представление о том, как выглядит Фел:

# Define a namespace
(ns my\example)
# Define a variable with name "my-name" and value "world"
(def my-name "world")
# Define a func with name "print-name" and one argument "your-name"
(defn print-name [your-name]
  (print "hello" your-name))
# Call the function
(print-name my-name)

Текущее состояние Фел

Посетите официальный сайт со всей документацией по языку Phel:

Https://phel-lang.org/

Также рекомендуется