2010-07-28 4 views
6

기존 소프트웨어에서 제공되는 부울 데이터에 기본 논리 연산자 (AND OR NOT)를 적용 할 수있는 자생 디티션 작성 트리를 사용하여 유전 프로그래밍을 구현했습니다. 그것은 배열의 형태로. 내가 사용하고있는 플랫폼은 SQLServer 백엔드가있는 .NET/C#입니다. 내 유전 프로그램의 성능을 향상시킬 방법을 찾고 나는 기능적 언어와 함께 제공되는 거의 모든 추가 기능이 필요하다고 결론을 내렸다. Scheme을 사용하거나 LISP를 확장하는 것이 가장 좋은 해결책이다. COND, IF, 비교 연산자 등 자신이 기존 구현을 확장합니다..NET/C에서 LISP 또는 SCHEME 호출하기 #

.NET 응용 프로그램에서 Scheme (또는 LISP)를 호출하여 데이터를 배열 형식으로 전달하는 효율적인 방법이 있다면 궁금한 점이 있습니다. 이것이 가능하지 않다면, 글 머리 기호를 물고 처음부터 구현하는 것이 더 좋을 것입니까? 예를 들어 텍스트 파일을 사용하여 통신하는 것과 같은 다른 방법을 찾아야합니까?

+0

일반적으로 Lisps는 .NET 런타임과 다른 런타임을 필요로하므로 호출하기가 어려울 수 있습니다. 마지막으로 C, Fortran, Common Lisp을 섞어 야했는데 (15 년이 넘었습니다), 나는 Lisp이라는 주 프로그램을 가지고 있어야했습니다. –

+0

SCHEME은 LISP입니다. – Ken

답변

0

F #을 보시지 않겠습니까?

(www.fsharp.net)

그것은 기본적으로 닷넷에서 OCaml로의 적응이다.

언제든지 IronScheme을 사용할 수 있지만 성숙한 것으로는 생각하지 않습니다.

+1

IronScheme의 문제점은 무엇입니까? – sukru

+0

IronScheme의 문제점은 성능에 대해 우려하는 것입니다. F #은 상당한 이점을 가지고 있으며, 여러분이 요청할 수있는 모든 기능적 언어의 장점을 제공합니다. 대부분의 경우 IronScheme은 훌륭합니다. – JasonFruit

5

IronScheme이라는 DLR에 대한 R6RS 규격 스키마 구현이 있습니다. IronScheme는 DLR을 사용하기 때문에, 그것은 당신이 포함하는 것과 같은 방법으로 API를 말하자면, 아이언 루비 또는 IronPython의를 내장 표준화 된 DLR을 사용하는 모든 .NET 응용 프로그램에 포함 할 수 있습니다

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

전체 조각을 찾을 수 있습니다 IronScheme의 저자 인 leppie가 a blog post에 있습니다. 또한 C# 람다를 Scheme 고차 함수와 다른 멋진 것들에 전달하는 방법을 보여줍니다.

2

IronScheme (위)을 사용하지 않는 한, 두 시스템간에 메시지를 전달하기 위해 ZeroMQ (Common Lisp와 .Net 드라이버가 모두있는 것)를 사용할 것입니다.