2010-07-28 9 views
6

In meiner vorhandenen Software habe ich eine Implementierung von genetischer Programmierung mit selbstgebauten Entscheidungsbaum, der grundlegende Logikoperatoren (UND ODER NICHT) in einigen booleschen Daten anwenden kann, die bereitgestellt werden es in Form eines Arrays. Die Plattform, die ich verwende, ist .NET/C# mit SQLServer Backend. Auf der Suche nach Möglichkeiten, die Leistung meines genetischen Programms zu verbessern, kam ich zu dem Schluss, dass ich fast alle zusätzlichen Funktionen benötige, die mit einer funktionalen Sprache einhergehen, und ich glaube, dass Scheme oder in geringerem Maße LISP die besten Lösungen sind, es sei denn, ich möchte Funktionen implementieren COND, IF, comparisson operators usw. erweitern die bestehende Implementierung.Aufruf von LISP oder SCHEME von .NET/C#

Meine Frage an das Forum ist, wenn es eine effiziente Möglichkeit gibt, Scheme (oder LISP) von einer .NET-Anwendung aufrufen, die Daten zurück und vorne in einer bestimmten Array-Form. Wenn das nicht möglich ist, denkst du, dass es besser ist, nur in den sauren Apfel zu beißen und es von Grund auf neu zu implementieren, oder nach alternativen Wegen zu suchen, wie zum Beispiel mit einer Textdatei zu kommunizieren?

+0

Im Allgemeinen benötigen Lisps eine Laufzeit, die nicht mit der .NET-Laufzeit übereinstimmt, und daher wird es schwierig, sie aufzurufen. Das letzte Mal, als ich C, Fortran und Common Lisp mischen musste (und das war vor über fünfzehn Jahren), musste ich das Hauptprogramm Lisp sein. –

+0

SCHEME ist-ein LISP. – Ken

Antwort

0

Warum nicht auf F # schauen?

(www.fsharp.net)

Es ist im Grunde eine Adaption von OCaml in .Net.

Oder Sie können immer IronScheme verwenden, aber ich denke nicht, dass es so ausgereift ist.

+1

Was ist los mit IronScheme? – sukru

+0

Was mit IronScheme nicht stimmt, ist, dass er sich Sorgen um die Leistung macht; F # hat dort einen beträchtlichen Vorteil und bietet alle funktional-sprachlichen Vorzüge, die man sich wünschen kann. In den meisten Fällen ist IronScheme großartig. – JasonFruit

5

Es gibt eine R6RS-kompatible Scheme-Implementierung für das DLR mit der Bezeichnung IronScheme. Da Ironscheme das DLR nutzt, kann sie in einer beliebigen .NET-Anwendung eingebettet werden, um die standardisierte DLR mit APIs in genau der gleichen Weise Einbettung, die Sie würde einbetten, sagen wir, IronRuby oder Ironpython: kann

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

Der vollständige Code-Schnipsel zu finden in a blog post von IronSchemes Autor, leppie. Es zeigt auch, wie man ein C# Lambda an eine Scheme-Funktion höherer Ordnung und andere coole Sachen weitergibt.

2

Sofern Sie nicht mit IronScheme (oben) gehen, würde ich wahrscheinlich etwas wie ZeroMQ (die beide Common Lisp und. Net-Treiber hat) verwenden, um Nachrichten zwischen den beiden Systemen zu übergeben.

Verwandte Themen