В моем существующем программном обеспечении у меня есть реализация генетического программирования с помощью дерева создания решения собственной разработки, которое может применить операторы основной логики (И ИЛИ НЕ) в некоторых булевых данных, которые предоставляются ему в форме массива. Платформой, которую я использую, является.NET / C# с бэкэндом SQLServer. При поиске способов улучшить производительность моей генетической программы, я пришел к заключению, что мне нужна почти вся дополнительная функциональность, которая идет с функциональным языком и я полагаю, что Схема или к меньшему расширяется, LISP лучшие решения для него, если я не хочу реализовать опции как COND, ЕСЛИ, операторы сравнения и т.д. сам расширение существующей реализации.
Мой вопрос форуму состоит в том, если существует какой-либо эффективный способ назвать Схему (или LISP) из приложения.NET, пасующего назад данные и переднюю сторону в некоторой форме массива. Если это не возможно, сделайте Вас вещь, что она будет лучше только, чтобы стиснуть зубы и реализовать его с нуля, или я должен искать альтернативные пути, как, например, передача использования текстового файла?
Существует реализация схемы, совместимой с 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 и другие интересные вещи.
Почему бы не взглянуть на F #?
( www.fsharp.net )
По сути, это адаптация OCaml в .Net.
Или вы всегда можете использовать IronScheme , но я не думаю, что он настолько зрелый.
Если вы не используете IronScheme (см. выше), я бы, вероятно, использовал что-то вроде ZeroMQ (который имеет драйверы Common Lisp и .Net) для передачи сообщений между двумя системами.