2010-07-28 28 views
6

在我現有的軟件中,我有一個使用本地增長決策樹的遺傳編程實現,它能夠在一些布爾數據中應用基本邏輯運算符(AND OR NOT)它以數組的形式存在。我使用的平臺是帶有SQLServer後端的.NET/C#。尋找方法來提高我的遺傳程序的性能,我得出結論認爲,我幾乎需要功能語言附帶的所有附加功能,我認爲Scheme或LISP是最好的解決方案,除非我想實現像COND,IF,comparisson運營商等本人擴展現有的實施。從.NET/C調用LISP或SCHEME#

我對論壇的問題是,是否有任何有效的方式來從.NET應用程序調用Scheme(或LISP)以某種數組形式傳回數據。如果這是不可能的,你會做得更好嗎?只是咬牙堅持並從頭開始實施它,或者我應該尋找替代方法,例如使用文本文件進行通信?

+0

一般來說,Lisps需要一個與.NET運行時不同的運行時,因此調用它們將會很困難。我最後一次混合使用C,Fortran和Common Lisp(並且這已經超過了15年前),我不得不讓主程序成爲Lisp。 – 2010-07-28 20:24:57

+0

SCHEME是一個LISP。 – Ken 2010-07-28 20:52:45

回答

0

爲什麼不看F#?

www.fsharp.net

它基本上的OCaml的在.net中的適應。

或者你總是可以使用IronScheme,但我不認爲它已經成熟。

+1

IronScheme有什麼問題? – sukru 2010-07-28 21:04:20

+0

這裏IronScheme的問題在於他擔心表現; F#在這裏有相當的優勢,它提供了你可以請求的所有功能語言的優點。在大多數情況下,IronScheme非常棒。 – JasonFruit 2010-07-28 23:51:43

5

DLR有一個R6RS兼容的方案實現,稱爲IronScheme。由於IronScheme使用DLR,它可以使用標準化DLR嵌入方式完全相同的API,你會嵌入,比方說,IronRuby的或IronPython的嵌入到任何.NET應用程序:

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

完整的片段,可以發現在IronScheme的作者,leppie的a blog post中。它還演示瞭如何將C#lambda傳遞給Scheme高階函數和其他很酷的東西。

2

除非你使用IronScheme(上圖),否則我可能會使用類似ZeroMQ的東西(它有Common Lisp和.Net驅動程序)在兩個系統之間傳遞消息。