2010-07-28 15 views
6

Varolan yazılımımda, temel mantık işleçlerini (VEYA VEYA DEĞİL), sağlanan bazı boole verilerinde uygulayabilen ev yapımı karar verme ağacını kullanarak genetik programlamanın bir uygulamasına sahibim bir dizi şeklinde. Kullandığım platform, SQLServer arka uçlu .NET/C#. Genetik programımın performansını iyileştirmenin yollarını aradığımda, işlevsel bir dil ile gelen neredeyse tüm ek işlevselliklere ihtiyacım olduğu sonucuna vardım ve Şema veya daha az bir LISP'nin, COND, IF, karşılaştırma operatörleri vb. Mevcut uygulamayı genişletiyor.LISP veya ŞEMA .NET/C'den çağrı #

Sorularım, bir dizi uygulamasında veriyi geri ve önünden geçiren bir .NET uygulamasından Scheme (veya LISP) çağrısı yapmanın etkili bir yolu olup olmadığını soruyor. Bu mümkün değilse, mermiyi ısırmak ve sıfırdan uygulamak daha iyi olur mu yoksa örneğin bir metin dosyası kullanarak iletişim gibi alternatif yollar aramalı mıyım?

+0

Genel olarak, Lisps'in .NET çalışma zamanı ile aynı olmayan bir çalışma zamanına ihtiyacı vardır ve bu nedenle çağrı yapmak zor olacaktır. En son C, Fortran ve Common Lisp'leri karıştırmam gerekti (ve on beş yıl önce), ana programın Lisp olması gerekiyordu. –

+0

SCHEME, bir LISP'dir. – Ken

cevap

0

Neden F #'ya bakmıyorsunuz?

(www.fsharp.net)

Temelde Net OCaml bir uyarlaması.

Ya da her zaman IronScheme'u kullanabilirsiniz, ancak bunun olgun olduğunu düşünmüyorum.

+1

IronScheme ile ilgili sorun nedir? – sukru

+0

IronScheme'de yanlış olan şey, performanstan endişe duyması; F # orada önemli bir kenara sahiptir ve isteyebileceğiniz tüm işlevsel dil iyiliğini sağlar. Çoğu durumda, IronScheme harika. – JasonFruit

5

IronScheme adlı DLR için R6RS uyumlu bir Şema uygulaması vardır. IronScheme DLR kullandığından, bu gömmek tam olarak aynı şekilde API'leri, diyelim ki, IronRuby veya IronPython katıştırma standartlaştırılmış DLR kullanarak herhangi NET uygulamasına gömülebilir:

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

tam pasajı bulunabilir IronScheme'nin yazarı, a blog post'da, leppie. Ayrıca, bir C# lambda'nın bir Scheme üst düzey işlevine ve diğer güzel şeylere nasıl geçeceğini de gösterir.

2

IronScheme (yukarıdaki) ile devam etmediğiniz sürece, muhtemelen iki sistem arasındaki iletileri iletmek için ZeroMQ (Common Lisp ve .Net sürücüleri olan) gibi bir şey kullanırdım.