/ / Ограничителна мрежа в Objective-C - цел-c, macos, lisp, sicp, програмиране на ограничения

Ограничителна мрежа в Objective-C - objective-c, macos, lisp, sicp, ограничено програмиране

Пиша приложение на Objective C на Mac OSX 10.7 и трябва да реша проблем с аритметични ограничения. Например, имам две уравнения за правоъгълник, a и b са дължините на страните:

P=2(a+b) (perimeter)
A=ab     (area)

Идентифицирах този проблем като проблем с удовлетворението. Потребителят трябва да може да посочи a и A, и да има изчислителни решения b и P. Намерих изпълнение на това в http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_idx_3516 , но не съм сигурен дали има чист начинобадете се на LISP програми от Objective C. Търся нещо, което би могло да ми предостави интерфейс на Objective C към решателя или може би да компилирам LISP програмата в библиотека на Objective C. В противен случай минималистичен разтворител с ограничен отворен код ще отговаря на моите нужди.

Отговори:

1 за отговор № 1

Всъщност има хора, изграждащи Lisp системи за iOS. (Отказ от отговорност - никога не съм използвал lisp през живота си)

Този въпрос за SO здравия фъфлене-он-Iphone-ЗИ сочи към блогът за функционални обаждания, чийто автор има ECL-iphone-строител на github

Този въпрос: е-някой-има-някакви Ви код примери от употреба ECL-фъфлене-за-iphone-развитие завършва на същата дестинация.

Дано това е добро начало за вас.

РЕДАКТИРАНЕ

Напълно пропуснах, че това беше не въпрос на iOS.

Но има хора, които изпълняват lisp на OSX. Този SO въпрос има някои решения: какво-е-на-най-добрата схема-или-фъфлене-изпълнение-за-OS-X

Този блог: здравия фъфлене-он-Mac-OS-X е повече гайки и болтове (и беше горната част на Google за мен)


1 за отговор № 2

Примерите за тази книга са написани схема, диалект на Лисп (има много). Книгата е някак стара, но повечето реализации на схема днес биха могли да изпълнят кодовите примери в тази книга. Има няколко реализации на Scheme, които работят на OSX, но примери от книгата лесно биха се пренесли и в Common Lisp - наистина има малка разлика. Повече от това, не вярвам, че ще отнеме толкова много време, за да напишете ги в C / Obj-C. Примерите в книгата са предназначени за програмиране с общо предназначение, нищо изключително характерно за диалекта на Лисп, който използват.

(Статията в Уики също има връзки към реализации. Не искам да рекламирам някоя конкретна, за да не звучи пристрастно - освен това аз нямам голям опит да я използвам извън академичните среди).

Вероятно, ако търсите инструмент с общо предназначение за доказване на математически теореми, тогава бихте могли да разгледате Coq - това е езикът, който е специализиран точно върху задачата. Той също работи на всяка Unix или Unix-подобна ОС.


0 за отговор № 3

Ако това е единственият проблем, който трябва да разрешите, това е по-лесно от това. Можете да решите b от гледна точка на A и a:

b = A / a

Тогава можете да намерите P използвайки първото уравнение, което сте публикували.


0 за отговор № 4

Езикът на програмиране nu е диалект на Лисп, който може да се интегрира с Objective-C, включително да бъде вграден в приложение на Objective-C. http://programming.nu/index

Чух много добри неща за него, но никога не съм го използвал.

Можете също така просто да опитате да преведете това приложение за решаване на ограничения в Objective-C.