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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
45
0
16 306
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Если можно пойти другим путем, вы можете получить доступ к .Net из вашего любимого Lisp через Эди Вайц 'RDNZL.

Теперь он возрождается с Велосипед.

Ehvince 17.10.2019 23:07

Нет, но вы можете подумать, что IronScheme работает на DLR.

С веб-сайта:

IronScheme будет стремиться к реализации схемы, соответствующей R6RS, на основе Microsoft DLR.

IronScheme будет полностью переписан IronLisp с учетом уроков, извлеченных при разработке IronLisp.

Автор IronScheme является здесь пользователем: stackoverflow.com/users/15541/leppie

Kyle Cronin 22.09.2008 20:29
Ответ принят как подходящий

Я не смотрел на это недавно, но, по крайней мере, в прошлом были некоторые проблемы с полной реализацией обычного lisp в CLR, и я был бы немного удивлен, если бы это изменилось. Проблемы возникают с такими вещами, как обработка чисел с плавающей запятой, где .net / clr имеет способ сделать это, а именно: а) слегка неверно; б) не согласуется со стандартом ANSI для обычного лиспа, но в) не позволяет каким-либо образом обойти это. Есть и другие похожие проблемы. Это неудобно и, возможно, не слишком важно, но означает, что вы вряд ли увидите ANSI CL в CLR.

Есть более серьезные проблемы, например, у common lisp более мощная объектная система, поэтому вы не можете сопоставить его 1: 1 с объектами во время выполнения (без MI, например). Это нормально, но оставляет вас с подходом изнутри / снаружи, которого обычная среда выполнения пытается избежать ...

Увидите вы или нет обычный шепелявый вариант, работающий на нем, - это другая история, но я не знаю ни одного на данный момент (не то чтобы я внимательно смотрел)

Вы можете использовать MOP для адаптации любой объектной модели, какой захотите. Однако не уверен, как справиться с проблемой числовых крайних случаев.

jfm3 23.09.2008 21:56

@ jfm3: да, вы можете многое сделать, но это не избавит от несоответствия импеданса между CLOS и объектной системой среды выполнения. Будучи более общей системой, CLOS все равно придется маршалировать вещи и из среды выполнения как объекты. Вы можете сделать это пригодным для жизни, используя MOP, но не совсем родным.

simon 25.09.2008 02:01

Насколько объектная система Lisp мощнее, чем .Net?

Hamish Grubijan 08.01.2010 05:40

Хэмиш, CLOS имеет множественную отправку, а также множественное наследование. Наряду с такими вещами, как методы до / после, возможно динамическое (во время выполнения) обновление классов и экземпляров. Таким образом, разрешение вызовов сложно, и вы просто не можете воспроизвести его в .NET (или Java, или C++ и т. д.)

simon 06.11.2010 22:47

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

L Sharp .NET

Не трогали с января 2009 года, вероятно, мертв

johnc 19.04.2010 06:57

это не обычная шепелявка. Другой диалект

jorgeu 09.07.2012 16:29

Возвращаясь к этому вопросу с 2008 по 2010 год, теперь вы, возможно, захотите рассмотреть Clojure в среде CLR. Это не Common Lisp, но его будет довольно легко изучить, если вы идете с этого направления. Взаимодействие с CLR чрезвычайно просто, оно привлекает больше пользователей каждый день и затрагивает несколько других важных тем, таких как параллелизм. Возможно, стоит потратить на это немного времени. Дополнительная информация о Clojure для CLR здесь.

Полный общий лисп для .NET http://code.google.com/p/uabcl/

выглядит так, будто это где java

citykid 27.11.2014 20:02

Вроде .. Я решил оставить то, что было закодировано как в Java, для поддержки из Java .. однако он использует IKVM для создания сборки .NET.

logicmoo 08.12.2014 13:36

#Script Lisp

Я разрабатываю #Script 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 можно установить мгновенно из кроссплатформенного инструмента 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.

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

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

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