РЕДАКТИРОВАТЬ: Потратив несколько часов на изучение этого, я не думаю, что я найду что-то, что действительно сэкономит мне время по сравнению с количеством времени и усилий по поиску подходящего языка, подходящих привязок и поддержание этой среды перед лицом изменений на всех этих платформах. Я принимаю ответ, который кажется наиболее реалистичным, потому что это будет лучшая идея для большинства людей. Мнение, которое я извлекаю из этих и других разговоров, заключается в том, что единственный верный путь вперед - это использовать функциональный язык, который может работать без внешних привязок, или что-то, что имеет привязки, поддерживаемые коммерческой организацией, такой как F #. Это слишком много работы и слишком мало спроса, и состояние того, что доступно в дикой природе, отражает это. Я надеюсь, что это изменится однажды.
Я бы хотел начать использовать функциональный язык в своем программном обеспечении, в дополнение к Objective-C, который является моим основным языком (C может работать в качестве связующего?). Должно быть кроссплатформенным, то есть Windows, Linux, OSX (x86) и iOS (ARM). Что я должен использовать и как этого добиться?
Я планирую в ближайшее время перейти на бэкэнд LLVM и Clang для моего Objective-C, если это что-то изменит.
У меня нет никаких "вложений в знания" ни в одном функциональном языке, хотя я немного обошелся. Я изучаю один с нуля, поэтому я хочу научиться чему-то нелогичному, если это возможно
- Решение должно быть реальным , сделано много предварительных или опытных работ, но ..
- Я использую цель C, и мне действительно нужны привязки Какао; потому что большое количество моих данных использует типы какао, так что в противном случае все будет беспорядочно. Кроме того, обмен сообщениями через цель-c не позволил бы мне создавать связующий код между статическими функциями C и моими экземплярами объекта Objective-C (это уже то, что вызовы методаjective-c делают встроенными ..)
- Решение должно быть лицензировано для статической компоновки (требование iOS)
Вот примеры того, что я хотел бы сделать:
- Обработка языка байтов, например, сетевого протокола.
- Входные данные: байты и длина и вызывающий экземпляр методаjective-c
- Вывод: возврат к вызывающему экземпляру методаjective-c, отправка ему аргументов контейнера-какао
- Принимайте решения о лучшем «ходу» в настольной игре
- Ввод: содержащиеся в какао данные о состоянии, вызывающий экземпляр методаjective-c
- Вывод: возможно изменить данные состояния, возможно вызвать произвольный метод target-c, а затем вернуться к вызову экземпляра метода target-c, отправить ему аргументы контейнера-какао