Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
1

Совместим ли Haskell с другими языками?

19.07.2013, 12:25. Показов 2444. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень заинтересовался функциональным программированием, даже несколько простых примеров разобрал.

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

Назрел у меня такой вопрос: Возможно ли написать часть кода на Хаскеле, а часть например на С#?
Например в С# я часто делаю графическое оформление, а логику и алгоритмы подключаю через dll другого языка.

Возможно ли так в Haskell(или с другими функц. яз.)? или надо все целиком и полностью писать на одном языке?
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2013, 12:25
Ответы с готовыми решениями:

Комбинация С++ с другими языками
Здравствуйте, я изучаю программирование сравнительно недавно, но уже знаком с...

Взаимодействие С++ с другими языками
Доброго времени суток. Возник такой вопрос, можно ли написать код например для работы с OLE, скажем...

Робота c другими языками
Можно импортировать (совместно писать програму) на C# и Java??Если можно то где найти литературу...

Работа с другими языками
Можно импортировать (совместно писать програму) на C# и Java??Если можно то где найти литературу...

9
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
19.07.2013, 13:01 2
загляните, например, сюда. Серия статей: Примеры использования wxWidgets, Кроссплатформенное приложение GUI на Haskell, Совместное использование C++ и Haskell.
2
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
19.07.2013, 15:18  [ТС] 3
serrr, Спасибо довольно интересно, а есть что нибудь про то как совместить С# и Haskell?
а то в основном нахожу холливары на тему что лучше, C# или haskell
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
19.07.2013, 18:11 4
Общие вопросы:
http://www.haskell.org/ghc/doc... fi-library
Конкретно DLL:
http://www.haskell.org/ghc/doc... -dlls.html
1
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
19.07.2013, 21:26 5
ТС, лучше разведи холливар C vs C#. шучу.
Здесь уместнее спросить, можно ли через FFI связаться с языком другим, кроме С, например C#. Насколько мнение известно, пока так нельзя.

Честно говоря, взаимодействие разных языков для меня туманно. Кроме С и js, конечно.
0
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
20.07.2013, 13:35 6
у меня для отдаленного будущего припасена мечта: хочу создать небольшую астрологическую программу с самыми основными и нужными функциями. Практически все современные программы такого типа используют лицензионную платную библиотеку swedll32.dll, которая произодит расчет по швейцарским эфемеридам, и которая написана на C++.)
Похоже, меня ждут трудности.
0
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
20.07.2013, 18:12 7
Цитата Сообщение от serrr Посмотреть сообщение
у меня для отдаленного будущего припасена мечта: хочу создать небольшую астрологическую программу с самыми основными и нужными функциями. Практически все современные программы такого типа используют лицензионную платную библиотеку swedll32.dll, которая произодит расчет по швейцарским эфемеридам, и которая написана на C++.)
Похоже, меня ждут трудности.
Нет никаких проблем в создании Win32 DLL на Хаскеле, обратитесь к документации GHC.
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,645
Записей в блоге: 13
21.07.2013, 11:37 8
Мне кажется, что если:

1) есть желание использовать (в ряде случаев) методы ФП
2) основная платформа - C#

то самое логичное - это (F# + C#)
1
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
21.07.2013, 16:32 9
sigma7i, Вот, что-то еще есть:
http://www.haskell.org/haskell... troduction
http://www.haskell.org/haskellwiki/FFI_cook_book
http://www.haskell.org/haskell... e_examples
2
163 / 163 / 22
Регистрация: 23.02.2011
Сообщений: 347
21.07.2013, 22:22 10
Лучший ответ Сообщение было отмечено как решение

Решение

Если нужен .NET и что-то еще. то копайся в .NET. Как уже раньше отмечено F# тебе подойдет. F# это такой OCaml, только вместо компиляции в быстрый нативный код, компиляция в байткод. Если необходимо взаимодействие с Haskell. То 2 варианта:
1) Писать модуль на С или С++ но с С интерфейсом т.е.
C++
1
2
3
4
5
6
7
8
9
10
11
#ifdef __cplusplus
extern "C" {
#endif
    void pushWord(char *w);
    void popAndCallWord();
    void printList();
    void hs_popWord(const char*);
    void popWord(void(*)(const char*));
#ifdef __cplusplus
}
#endif
далее идет реализация этих функций обычным c++ ну или c++11. Это компилится в .o файлы, затем в Haskell делается такой порт
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{-# LANGUAGE ForeignFunctionInterface #-}
 
import Foreign.C
import Foreign.C.String
import Data.IORef
import System.IO.Unsafe
import Foreign.Ptr
 
foreign import ccall safe "pushWord" c_pushWord             :: CString -> IO()
foreign import ccall safe "popAndCallWord" popWordAndCall   :: IO()
foreign import ccall safe "popWord" c_popWord               :: FunPtr(CString -> IO()) -> IO()
foreign import ccall safe "printList" printList             :: IO()
foreign export ccall hs_popWord                             :: CString -> IO()
foreign import ccall "wrapper" mkGet                        :: (CString -> IO()) -> IO (FunPtr(CString -> IO()))
 
pushWord :: String -> IO()
pushWord s = withCString s c_pushWord
-- blah blah blah
2) Писать на любом языке(который позволяет это) динамическую библиотеку и подключать ее

FFI с С и С++ штука достаточно удобная, через Foreign.Ptr позволяет даже отслеживать созданные в С структуры и массивы через GC хаскеля. Так же можно делать экспорт hs функций в С. Я бы посоветовал именно это. На мой взгляд C++ намного удобнее и быстрее С#, но это уже вопрос вкуса.
3
21.07.2013, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 22:22
Помогаю со студенческими работами здесь

Компоненты с другими языками
Интересно, есть ли для Lazarus модули или компоненты, которые позволяют вставлять в программы куски...

ASP по сравнению с другими языками
Ну вот. Свершилось!!! Наступили тяжелые времена! Мне, человеку поклоняющемуся Юникс, веб-серверу...

Связь пролога с другими языками программирования
Необходимо связать код на прологе с другими языками програмиирования. Я так понимаю надо сделать...

Преимущества языка VBScript - перед другими языками программирования
Добрый вечер, господа программисты. Дайте ответ новичку в сфере программирования. В чем (в двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru