2009-09-25 12 views
20

Czy istnieje odpowiednik drzew wyrażeń .net, które stanowią podrzędny LINQ dla JVM? Chciałbym zaimplementować niektóre struktury kodu podobne do LINQ w Scala i zastanawiam się, czy muszę też przetasować własną bibliotekę drzewek wyrażeń.Jawne drzewa wyrażeń

Aktualizacja: Nie jestem zainteresowany samym odpowiednikiem linq. .net ma duży zestaw narzędzi drzewa ekspresji, które ułatwiają dynamiczne kompilowanie kodu w czasie wykonywania, dzięki czemu można go wywoływać z kodu. Projekt, który chcę podjąć, nie ma związku z bazami danych. Drzewa ekspresji to łatwy sposób opisywania kodu działającego na danych.

Jeśli nie ma biblioteki, moim drugim rozwiązaniem jest stworzenie takiego, który emituje kod bajtowy.

+1

Dla JAVA spróbuj Quare (codehaus). ALE, o ile JAVA nie obsługuje funkcji wysokiego rzędu (funkcjonuje jako członkowie pierwszej klasy), nie wierzę, że te "biblioteki" będą odczuwać prawdziwy LINQ. –

+0

Steve - czy kiedykolwiek miałeś z tym coś wspólnego? – MalcomTucker

+1

Nie. Właśnie wróciliśmy do okien i używaliśmy okien. Dla niektórych rzeczy użyliśmy LLVM z C++ na unixie. Jednakże izolujemy pliki java i używamy .net do wszystkiego, co wymaga dynamicznego kodegena. –

Odpowiedz

1

Najbliższe rzeczy, o których wiem, to biblioteki Juliana Hyde'a: linq4j i Optiq. Mają model drzewa ekspresji, obsługują podobny do LINQ model programowania (z zastrzeżeniem składni Java) w stosunku do wielu typów źródeł danych.