Вызов LISP или СХЕМЫ от.NET/C#

В моем существующем программном обеспечении у меня есть реализация генетического программирования с помощью дерева создания решения собственной разработки, которое может применить операторы основной логики (И ИЛИ НЕ) в некоторых булевых данных, которые предоставляются ему в форме массива. Платформой, которую я использую, является.NET / C# с бэкэндом SQLServer. При поиске способов улучшить производительность моей генетической программы, я пришел к заключению, что мне нужна почти вся дополнительная функциональность, которая идет с функциональным языком и я полагаю, что Схема или к меньшему расширяется, LISP лучшие решения для него, если я не хочу реализовать опции как COND, ЕСЛИ, операторы сравнения и т.д. сам расширение существующей реализации.

Мой вопрос форуму состоит в том, если существует какой-либо эффективный способ назвать Схему (или LISP) из приложения.NET, пасующего назад данные и переднюю сторону в некоторой форме массива. Если это не возможно, сделайте Вас вещь, что она будет лучше только, чтобы стиснуть зубы и реализовать его с нуля, или я должен искать альтернативные пути, как, например, передача использования текстового файла?

7
задан JohnP 28 July 2010 в 20:15
поделиться

3 ответа

Существует реализация схемы, совместимой с R6RS, для DLR под названием IronScheme . Поскольку IronScheme использует DLR, его можно встроить в любое приложение .NET с помощью стандартизованных API-интерфейсов встраивания DLR точно так же, как если бы вы встраивали, скажем, IronRuby или IronPython:

dynamic Scheme = new SchemeEnvironment();
var list = Scheme.list;
var map = Scheme.map;
// and so on

Полный фрагмент можно найти в сообщение в блоге автора IronScheme, leppie. Он также показывает, как передать лямбда-выражение C # в функцию высшего порядка Scheme и другие интересные вещи.

5
ответ дан 7 December 2019 в 05:16
поделиться

Почему бы не взглянуть на F #?

( www.fsharp.net )

По сути, это адаптация OCaml в .Net.

Или вы всегда можете использовать IronScheme , но я не думаю, что он настолько зрелый.

0
ответ дан 7 December 2019 в 05:16
поделиться

Если вы не используете IronScheme (см. выше), я бы, вероятно, использовал что-то вроде ZeroMQ (который имеет драйверы Common Lisp и .Net) для передачи сообщений между двумя системами.

2
ответ дан 7 December 2019 в 05:16
поделиться