Существуют ли какие-либо реализации Common Lisp для .Net?





Если можно пойти другим путем, вы можете получить доступ к .Net из вашего любимого Lisp через Эди Вайц 'RDNZL.
Нет, но вы можете подумать, что IronScheme работает на DLR.
С веб-сайта:
IronScheme будет стремиться к реализации схемы, соответствующей R6RS, на основе Microsoft DLR.
IronScheme будет полностью переписан IronLisp с учетом уроков, извлеченных при разработке IronLisp.
Автор IronScheme является здесь пользователем: stackoverflow.com/users/15541/leppie
Я не смотрел на это недавно, но, по крайней мере, в прошлом были некоторые проблемы с полной реализацией обычного lisp в CLR, и я был бы немного удивлен, если бы это изменилось. Проблемы возникают с такими вещами, как обработка чисел с плавающей запятой, где .net / clr имеет способ сделать это, а именно: а) слегка неверно; б) не согласуется со стандартом ANSI для обычного лиспа, но в) не позволяет каким-либо образом обойти это. Есть и другие похожие проблемы. Это неудобно и, возможно, не слишком важно, но означает, что вы вряд ли увидите ANSI CL в CLR.
Есть более серьезные проблемы, например, у common lisp более мощная объектная система, поэтому вы не можете сопоставить его 1: 1 с объектами во время выполнения (без MI, например). Это нормально, но оставляет вас с подходом изнутри / снаружи, которого обычная среда выполнения пытается избежать ...
Увидите вы или нет обычный шепелявый вариант, работающий на нем, - это другая история, но я не знаю ни одного на данный момент (не то чтобы я внимательно смотрел)
Вы можете использовать MOP для адаптации любой объектной модели, какой захотите. Однако не уверен, как справиться с проблемой числовых крайних случаев.
@ jfm3: да, вы можете многое сделать, но это не избавит от несоответствия импеданса между CLOS и объектной системой среды выполнения. Будучи более общей системой, CLOS все равно придется маршалировать вещи и из среды выполнения как объекты. Вы можете сделать это пригодным для жизни, используя MOP, но не совсем родным.
Насколько объектная система Lisp мощнее, чем .Net?
Хэмиш, CLOS имеет множественную отправку, а также множественное наследование. Наряду с такими вещами, как методы до / после, возможно динамическое (во время выполнения) обновление классов и экземпляров. Таким образом, разрешение вызовов сложно, и вы просто не можете воспроизвести его в .NET (или Java, или C++ и т. д.)
Не трогали с января 2009 года, вероятно, мертв
это не обычная шепелявка. Другой диалект
Возвращаясь к этому вопросу с 2008 по 2010 год, теперь вы, возможно, захотите рассмотреть Clojure в среде CLR. Это не Common Lisp, но его будет довольно легко изучить, если вы идете с этого направления. Взаимодействие с CLR чрезвычайно просто, оно привлекает больше пользователей каждый день и затрагивает несколько других важных тем, таких как параллелизм. Возможно, стоит потратить на это немного времени. Дополнительная информация о Clojure для CLR здесь.
Полный общий лисп для .NET http://code.google.com/p/uabcl/
выглядит так, будто это где java
Вроде .. Я решил оставить то, что было закодировано как в Java, для поддержки из Java .. однако он использует IKVM для создания сборки .NET.
Я разрабатываю #Script Lisp, расширенную версию Нуката Лисп с рядом новых функций.
который повторно использует существующие возможности сценариев #Script для обеспечения бесшовной интеграции с остальными #Script
(см. Язык блокирует выражения)
и .NET, включая Создание сценариев для .NET-типов, поддержку всех числовых типов .NET и доступ к его полному
библиотека более 1000+Методы сценария - оптимально разработана для доступа к функциональности .NET из динамического языка.
Чтобы улучшить совместимость с существующим исходным кодом Common Lisp, он также реализует большую часть Упрощенная ссылка на Common Lisp а также все недостающие функции, необходимые для реализации примеров C# LINQ 101 в Lisp:
и для улучшения читаемости и знакомства он также принимает ряд синтаксиса Clojure для определения
Литералы список данных и карта,
анонимные функции,
синтаксис в Java Interop для .NET Interop,
синтаксис ключевых слов для индексирования коллекций и доступ к средствам доступа к индексу
и популярные более короткие псевдонимы Clojure для fn, def, defn, улучшающие совместимость исходного кода с Clojure.
Поскольку это первоклассный язык #Script, он извлекает выгоду из своей обширной экосистемы поддерживаемых сценариев использования, некоторые из которых вы можете предварительно просмотреть в видео на YouTube ниже:
#Script Lisp можно установить мгновенно из кроссплатформенного инструмента dotnetсеть, который можно установить с помощью:
$ dotnet tool install -g web
Где вы сможете вызвать мгновенный Lisp REPL с помощью:
$ web lisp
и иметь возможность запускать и смотреть скрипты Lisp, где вы можете просматривать изменения в режиме реального времени.
Такая же функциональность доступна в Windows инструмент dotnet app:
$ dotnet tool install -g app
Что вдобавок позволит вам использовать #Script Lisp для разработки Gist Настольные приложения и Sharp Apps (настольных приложений Windows .NET Core).
По состоянию на 2019 год появился Bike: https://github.com/Lovesan/bike. Он реализует кроссплатформенный интерфейс Common Lisp с платформой .Net Core, используя уровни совместимости с lisp.
(видел это на https://github.com/CodyReichert/awesome-cl#net-core)
Теперь он возрождается с Велосипед.