Tło: Napisałem zabawkowy interpreter Lisp, do którego próbuję dodać funkcjonalność LLVM JIT. W tej chwili nie narzuca następujące ograniczenia:Dodawanie funkcji w LLVM (powiązania haskell), gdy liczba parametrów nie jest znana w czasie kompilacji
- tylko wartości całkowite są dozwolone w funkcji
- Zmienne mogą odwoływać się tylko parametry formalne
Biorąc:
compile :: [Value] -- List of Formal Parameters
-> [Value] -- Body of function
-> CodeGenModule(Function a)`
Pytanie: Jak wygenerować funkcję, w której liczba p parametry są równe długości listy Formalne parametry?
Dobrym początkiem może być albo pomoc w zrozumieniu 'forall f g r. FunctionArgs f g (CodeGenFunction r()) ' –
Czy chciałbyś podzielić się doświadczeniem używania wiązania haskell LLVM? z której wersji korzystałeś? :) – Nybble
@Wu: LLVM 2.9 z powiązaniem llvm z [commit 729514] (https://github.com/bos/llvm/commit/72951414d7b7b377ee1a040fae2b043b7747ceff). [Zobacz także] (http://stackoverflow.com/questions/6406067/haskell-llvm-binding-linker-error) –