И снова о ФЯ
Для Ocaml используют LablTk и LablGtk.
Сам не пробовал, но программы есть, следовательно, библиотеки работают.
Интерфейс, к ним, конечно, императивный и объектно-ориентированный, ведь это просто обёртки над библиотеками.
Для Haskell есть wxHaskell - обёртка над wxWindows, с аналогичными свойствами.
Более концептуальная штука - wxFruit, но похоже оно мёртвое.
2) Меня больше интересует ответ на пункт 2. Без GUI в конце концов иногда можно и обойтись. С этим-то что делать?
http-сервер --- совершенно не вопрос.
2.2. Например, на продолжениях.
2.3. См. Erlang и RT-средства в Common Lisp.
2.4. RT подразумевает управление последовательностью
исполнения --- не ФП. Не чистое ФП.
3.1. Есть DrScheme или оно называется как-то иначе.
3.2. Есть Tk для Схемы, вполне может быть и для других.
---
...Я работаю антинаучным аферистом...
Ботай Haskell.
Все обращения к миру необходимо сериализовывать, когда про него вообще ничего не известно.
В данной задаче известна дополнительная информация об устройстве внешнего мира,
которую необходимо использовать для решения.
А я нашёл для gtk2.
Гуглом за 2 минуты.
Что я не так сделал?
Видимо ты их не прочекал. Я тоже ин нашел. Только утверждалось что они experimental. Я такой софт не юзаю Тем более они мне не интересны, так как не pure functional. Меня интересует pure functional + GUI.
Я сам лично написал из интереса програмулину на Haskell для wxWindows. Работала и на Linux и под Windows. Выглядела нормально. Но на Haskell геморойно ГУИ писать из-за ленивости.
Кстати, совсем не обязательно писать именно на ФЯ. Можно приделать чужой ГУИ, как в MLDonkey, например - ядро на OCaml, а GUI на Java.
Вот, говорят, если тулкит продумать в функциональной парадигме, то становится легче.
Пример: FranTk. Но он сделан на основе Tk, так что внешний вид мало кому понравится.
Оставить комментарий
Julie16
1) Я говорю о чистых ФЯ(абсолютное отсутствие side effects)2) Для того чтобы осуществлять ввод-вывод и вообще взаимодействие с сервисами ОС в ФЯ приходится прибегать к разнообразным ухищрениям. Например, обычной практикой является следующая абстракция(извините что пишу на С подобной нотации, но думаю что все и так будет понятно):
World process_request( World w ). То есть любая функция, которая обращается к средатвам ОС, берет в качестве параметра весь внешний мир, и возвращает новый мир как результат своей работы. Для эффективности этого подхода делуется следующее: предполагается что мир существует только один и что все запросы к нему сериализованы. Тогда новый мир можно положить на место старого, грубо говоря работать как обычно, но с сериализацией запросов. Теперь возникает вопрос: как в этой архитектуре написать эффективное мультитредное приложение, например http сервер? Ведь зачастую средства ОС независимы(я могу одновременно читать файл и писать в сеть чем может воспользоваться это приложение. В ФЯ это невозможно вследствие сериализации всех запросов к миру(ОС).
3) Какие существуют нормальные графические библиотеки/биндинги для ФЯ? Вообще говоря их много. Только почти все они заброшены и не работают. Для лиспа(например) я нашел биндинги для gtk1. Ну это разве дело? В общем похоже что на ФЯ невозможно создавать приложения с современно выглядящим GUI.