2010-10-30 3 views
12

Можно ли назвать функцию Common Lisp в iOS?Common LISP на iPhone/iOS

Если да, возможно ли создать его в динамической библиотеке?

+0

Большинство ответов здесь устарели. Неясно, работает ли упомянутый продукт, все еще производящий код связи, который может быть фактически использован в производстве: LLVM, arm64, компиляция бит. Последняя информация о MOCL, которая выглядит многообещающей, составляет один год. –

ответ

8

Это зависит от того, что вы подразумеваете под вызовом функции CL, но, скорее всего, ECL будет вашим самым коротким путем. Начните здесь, так как есть исправление для ECL, чтобы лучше вместить iOS: http://funcall.posterous.com/tag/iphone

ECL генерирует код C, поэтому вы должны находиться на безопасной территории с политиками переключения Apple.

+1

«Постельные пространства больше недоступны»: \ – Olie

+0

@Olie http://web.archive.org/web/20130323055046/http://funcall.posterous.com/tag/iphone; ссылки на https://github.com/kriyative/ecl-iphone-builder/tree/elf и https://github.com/kriyative/ecl-iphone-builder/tree/dragon и http: //mclide.in- progress.com/. –

+0

Блог переехал: http://kriyative.github.io/tags/#iphone – Pascal

2

Вы можете использовать Gambit Scheme или Clozure Common Lisp, оба из которых могут взаимодействовать с Cocoa, первый, потому что он генерирует C и последний, потому что есть мост от Clozure до Cocoa. Сделайте поиск в Google, и вы найдете несколько вещей.

+3

Я сделал несколько поисковых запросов Google, и я не понимаю, как это поможет. Gambit - это другой язык программирования. В Clozure нет порта Darwin/ARM (ближайшими портами являются Darwin-x86 и Linux-ARM). – Ken

+0

Gambit выглядит многообещающим на бумаге, но он не создает источники C, которые могут быть скомпилированы в текущем Xcode (7.1). Похоже, что некоторые частичные попытки поддержать LLVM. В текущем состоянии он непригоден. Clozure поддерживает привязку Objective C, но AFAIK никогда не работал на iOS. –

3

Вы пытались MOCL?

Согласно сайту «mocl - это высоко оптимизирующая реализация CL, обеспечивающая плотный собственный код через LLVM/Clang».

Возможно, вы можете создать динамическую библиотеку, хотя она предназначена для использования в обратном порядке.

+4

$ 199 Стандартная лицензия, $ 1299 Предприятие –

+2

mocl (то, что вы называете «Common Lisp для iOS и Android») действительно позволяет вам экспортировать ваши функции CL, чтобы их можно было вызывать из Obj-C или Swift. – masukomi

+1

Кто-нибудь знает ТЕКУЩЕЕ СОСТОЯНИЕ MOCL? Разрабатывается ли она активно? Поддерживает ли он новейшую компиляцию LLVM-бит внутри XCode? Актуальная доступная информация сейчас один год ... У вас есть новости? –

0

Там также существует Mobile Common Lisp 1

+0

Недавно вы использовали его? –

3

Clozure Common Lisp (CCL) работает в Linux на ARM, и Гэри Byers давно сделал экспериментальную версию iPhone, но он будет работать только на тюремный разбитый iPhone , Проблема заключается в том, что компилятор CCL пишет исполняемый код, но iOS из коробки не позволяет записываемой странице быть выполненной, поэтому вы никогда не сможете ее запустить.

У нас были обсуждения о том, что код, который поставляется с приложением iOS, находится в разделе кода только для чтения и добавляет компилятор байтового кода, так что код, созданный во время выполнения, можно довольно быстро интерпретировать, но никто не предлагал финансировать этот проект, поэтому он так и не завершился.

Возможно, вы можете просто интерпретировать код, созданный во время выполнения, но текущий интерпретатор CCL компилирует нетривиальный код перед его выполнением.

MOCL - это, вероятно, лучший вариант для написания кода, который можно вызывать из других приложений, но это только предположение, поскольку я его не использовал.