Существуют ли реализации Common Lisp для.Net?
Существуют ли реализации Common Lisp для.Net?
7 ответов
Я не рассматривал это недавно, но, по крайней мере, в прошлом были некоторые проблемы с полной реализацией общего lisp в CLR, и я был бы немного удивлен, если это изменилось. Проблемы возникают с такими вещами, как обработка чисел с плавающей точкой, когда.net/clr имеет способ сделать это, а) слегка некорректный б) не согласный со стандартом ANSI для общего списка, но в) не позволяющий обойти это. Есть и другие похожие проблемы. Это неудобно и, возможно, не слишком важно, но означает, что вы вряд ли увидите CL CL ANSI на CLR.
Существуют более серьезные проблемы, например, обычный lisp имеет более мощную объектную систему, поэтому вы не можете сопоставить его 1:1 с объектом во время выполнения (без MI, например). Это нормально, но оставляет вам внутренний / внешний вид подхода, который пытается избежать обычная среда выполнения...
Вы увидите, работает ли на нем распространенный вариант с недоверием, - это отдельная история, но я пока не знаю ни одного (не то, чтобы я выглядел очень усердно).
Нет, но вы можете рассмотреть возможность использования IronScheme на DLR.
С веб-сайта:
IronScheme будет стремиться быть реализацией схемы, соответствующей R6RS, на основе Microsoft DLR.
IronScheme будет полностью переписан IronLisp с учетом уроков, полученных при разработке IronLisp.
Если все в порядке, вы можете получить доступ к.Net с вашего любимого Lisp через RDNZL Эди Вейц.
Пересматривая этот вопрос с 2008 по 2010 год, вы можете рассмотреть Clojure в CLR. Это не Common Lisp, но его будет довольно легко узнать, если вы идете с этого направления. Взаимодействие с CLR очень просто, оно ежедневно привлекает все больше пользователей и затрагивает несколько других важных тем, таких как параллелизм. Возможно, стоит потратить на это немного времени. Более подробную информацию о CLR можно найти здесь.
По состоянию на 2019 год появился Bike: https://github.com/Lovesan/bike. Он реализует кроссплатформенный интерфейс Common Lisp с платформой.Net Core, используя уровни совместимости с lisp.
- Прежде всего, это возрождение РДНЗЛ
- На этот раз в.Net Core, без строчки кода C++ и полностью кросс-платформенный.
(видел это на https://github.com/CodyReichert/awesome-cl)
#Script Lisp
Я развиваюсь #Script
Lisp, расширенная версия Nukata Lisp с рядом новых функций, которая повторно использует#Script
существующие возможности сценариев для обеспечения бесшовной интеграции с остальными #Script
(см. " Языковые блоки и выражения") и.NET, включая создание сценариев для типов.NET, поддержку всех числовых типов.NET и доступ к своей обширной библиотеке из более чем 1000+ методов сценариев - оптимально разработанных для доступа к функциям.NET из динамического языка.
Чтобы улучшить совместимость с существующим исходным кодом Common Lisp, он также реализует большую часть Упрощенной ссылки Common Lisp, а также все недостающие функции, необходимые для реализации примеров C# LINQ 101 в Lisp:
#Script Lisp Примеры LINQ
и для улучшения читаемости и осведомленности он также использует ряд синтаксиса Clojure для определения
списка данных и литералов карт,
анонимных функций, синтаксиса в Java Interop для.NET Interop,
синтаксиса ключевых слов для индексирования коллекций и доступа к средствам доступа к индексу и популярных более коротких псевдонимов Clojure дляfn
, def
, defn
- улучшение совместимости исходного кода с Clojure.
Демоверсии YouTube
Потому что это первоклассный #Script
язык, он извлекает выгоду из обширной экосистемы поддерживаемых сценариев использования, некоторые из которых вы можете предварительно просмотреть в видеороликах YouTube ниже:
- #Script LISP Repl with web lisp
- Lisp TCP REPL с #Script Lisp
- #Script Live смотрел сценарии оболочки Lisp
- Создание сценария для 3D-объектов игры Unity из внутриигрового #Script Lisp REPL
Установить
#Script
Lisp можно установить мгновенно из кроссплатформенного веб - сайта.dotnet
инструмент, который можно установить с:
$ dotnet tool install -g web
Где вы сможете вызвать мгновенный Lisp REPL с помощью:
$ web lisp
и иметь возможность запускать и просматривать сценарии Lisp, где вы можете просматривать изменения в режиме реального времени.
Те же функции доступны в инструменте dotnet приложения Windows:
$ dotnet tool install -g app
Что вдобавок позволит вам использовать #Script
Lisp для разработки Gist Desktop Apps и Sharp Apps (.NET Core Windows Desktop Apps).