Новый функциональный язык. Полная совместимость с 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)
Текущее состояние Фел
- У нас есть открытое Сообщество Gitter, где мы помогаем друг другу
- Мы подготовили простое Руководство по началу работы
- Мы подготовили простой репозиторий Github с шаблоном Phel Scaffolding
- Мы только что выпустили первую официальную версию: 0.1.0
Посетите официальный сайт со всей документацией по языку Phel: