2010-10-30 4 views
12

È possibile chiamare una funzione Common Lisp in iOS?LISP comune su iPhone/iOS

Se è così, è possibile crearlo in una libreria dinamica?

+0

La maggior parte delle risposte qui non sono aggiornate. Non è chiaro se il prodotto menzionato funzioni ancora, produca ancora codice collegabile che può essere effettivamente utilizzato in produzione: LLVM, arm64, compilazione di bit. Le ultime informazioni su MOCL, che sembra promettente, hanno un anno. –

risposta

8

Dipende da cosa intendi chiamando una funzione CL, ma molto probabilmente ECL sarà il tuo percorso più breve. Inizia qui, in quanto c'è una patch per ECL per meglio adattarsi a iOS: http://funcall.posterous.com/tag/iphone

ECL genera codice C, quindi dovresti essere in sicurezza con le politiche di spostamento di Apple.

+1

"Gli spazi Poster non sono più disponibili": \ – Olie

+0

@Olie http://web.archive.org/web/20130323055046/http://funcall.posterous.com/tag/iphone; link a https://github.com/kriyative/ecl-iphone-builder/tree/elf e https://github.com/kriyative/ecl-iphone-builder/tree/dragon e http: //mclide.in- progress.com/. –

+0

Il blog si è spostato: http://kriyative.github.io/tags/#iphone – Pascal

2

È possibile utilizzare Gambit Scheme o Clozure Common Lisp, entrambi in grado di interfacciarsi con Cocoa, il primo perché genera C e quest'ultimo perché esiste un bridge da Clozure a Cocoa. Fai una ricerca su Google e troverai alcune cose.

+3

Ho fatto un paio di ricerche su google e non vedo come entrambi possano aiutare. Gambit è un linguaggio di programmazione diverso. Clozure non ha una porta Darwin/ARM (le porte più vicine sono Darwin-x86 e Linux-ARM). – Ken

+0

Gambit sembra promettente su carta, ma non produce fonti C che possono essere compilate all'interno di Xcode (7.1) attuale. Sembra esserci un tentativo parziale di supportare LLVM. Nel suo stato attuale è inutilizzabile. Clozure supporta l'associazione C oggettiva, ma AFAIK non ha mai funzionato su iOS. –

3

Hai provato MOCL?

Secondo il sito Web "mocl è un'implementazione CL altamente ottimizzante, che offre codice nativo stretto tramite LLVM/Clang".

Forse è possibile creare una libreria dinamica, sebbene sia progettata per essere utilizzata al contrario.

+4

$ 199 Licenza Standard, $ 1299 Enterprise –

+2

mocl (ciò che chiami "Common Lisp per iOS e Android"), infatti, ti permette di esportare le tue funzioni CL in modo tale che possano essere chiamate da Obj-C o Swift. – masukomi

+1

Qualcuno conosce lo STATO ATTUALE del MOCL? È attivamente sviluppato? Supporta la più recente compilazione di bit LLVM all'interno di XCode? Le ultime informazioni disponibili ora hanno un anno ... Hai qualche notizia? –

0

Esiste anche mobile Common Lisp 1

+0

Lo hai effettivamente usato, di recente? –

3

Clozure Common Lisp (CCL) viene eseguito in Linux su ARM, e Gary Byers tempo fa ha fatto una versione sperimentale iPhone, ma sarebbe eseguito solo su un iPhone carcere spezzato . Il problema è che il compilatore CCL scrive codice eseguibile, ma iOS pronto all'uso non consente di rendere eseguibile una pagina scrivibile, quindi non è possibile eseguirne il codice.

Abbiamo discusso su come inserire il codice fornito con un'app per iOS in una sezione di codice di sola lettura e aggiungere un compilatore di codice byte, in modo che il codice creato in fase di esecuzione possa essere interpretato abbastanza rapidamente, ma nessuno si è offerto di finanziare quel progetto, quindi non è stato fatto.

Si potrebbe pensare che si possa semplicemente interpretare il codice creato in fase di esecuzione, ma l'attuale "interprete" CCL compila codice non banale prima di eseguirlo.

MOCL è probabilmente la migliore opzione per scrivere codice richiamabile da altre app, ma è solo un'ipotesi, dal momento che non l'ho usato.