Существуют ли реализации 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 можно найти здесь.

Полный общий шрифт для.NET http://code.google.com/p/uabcl/

По состоянию на 2019 год появился Bike: https://github.com/Lovesan/bike. Он реализует кроссплатформенный интерфейс Common Lisp с платформой.Net Core, используя уровни совместимости с lisp.

  • Прежде всего, это возрождение РДНЗЛ
  • На этот раз в.Net Core, без строчки кода C++ и полностью кросс-платформенный.

(видел это на https://github.com/CodyReichert/awesome-cl)

#Script Lisp

Я развиваюсь #ScriptLisp, расширенная версия 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 ниже:

Установить

#ScriptLisp можно установить мгновенно из кроссплатформенного веб - сайта.dotnet инструмент, который можно установить с:

$ dotnet tool install -g web

Где вы сможете вызвать мгновенный Lisp REPL с помощью:

$ web lisp

и иметь возможность запускать и просматривать сценарии Lisp, где вы можете просматривать изменения в режиме реального времени.

Те же функции доступны в инструменте dotnet приложения Windows:

$ dotnet tool install -g app

Что вдобавок позволит вам использовать #ScriptLisp для разработки Gist Desktop Apps и Sharp Apps (.NET Core Windows Desktop Apps).

Вы можете попробовать это (отказ от ответственности, я сам не проверял). Также прочитайте это. вот откуда пришла ссылка.

Другие вопросы по тегам