Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
sigma7i
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
1

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

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

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

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

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

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

Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?)
"У нас" ? А где преподавание этой экзотики на высоте? Добавлено через 2 минуты А где такие...

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

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

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

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

9
serrr
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
19.07.2013, 13:01 2
загляните, например, сюда. Серия статей: Примеры использования wxWidgets, Кроссплатформенное приложение GUI на Haskell, Совместное использование C++ и Haskell.
2
sigma7i
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 17
19.07.2013, 15:18  [ТС] 3
serrr, Спасибо довольно интересно, а есть что нибудь про то как совместить С# и Haskell?
а то в основном нахожу холливары на тему что лучше, C# или haskell
0
helter
Эксперт по математике/физике
3831 / 2858 / 309
Регистрация: 12.03.2013
Сообщений: 5,192
19.07.2013, 18:11 4
Общие вопросы:
http://www.haskell.org/ghc/docs/7.6....ml#ffi-library
Конкретно DLL:
http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/win32-dlls.html
1
19.07.2013, 18:11
Mysterious Light
Эксперт по математике/физике
4091 / 2002 / 408
Регистрация: 19.07.2009
Сообщений: 3,019
Записей в блоге: 21
19.07.2013, 21:26 5
ТС, лучше разведи холливар C vs C#. шучу.
Здесь уместнее спросить, можно ли через FFI связаться с языком другим, кроме С, например C#. Насколько мнение известно, пока так нельзя.

Честно говоря, взаимодействие разных языков для меня туманно. Кроме С и js, конечно.
0
serrr
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
20.07.2013, 13:35 6
у меня для отдаленного будущего припасена мечта: хочу создать небольшую астрологическую программу с самыми основными и нужными функциями. Практически все современные программы такого типа используют лицензионную платную библиотеку swedll32.dll, которая произодит расчет по швейцарским эфемеридам, и которая написана на C++.)
Похоже, меня ждут трудности.
0
Сtrl
142 / 132 / 8
Регистрация: 19.07.2011
Сообщений: 184
20.07.2013, 18:12 7
Цитата Сообщение от serrr Посмотреть сообщение
у меня для отдаленного будущего припасена мечта: хочу создать небольшую астрологическую программу с самыми основными и нужными функциями. Практически все современные программы такого типа используют лицензионную платную библиотеку swedll32.dll, которая произодит расчет по швейцарским эфемеридам, и которая написана на C++.)
Похоже, меня ждут трудности.
Нет никаких проблем в создании Win32 DLL на Хаскеле, обратитесь к документации GHC.
2
Catstail
Модератор
24406 / 12342 / 2244
Регистрация: 12.02.2012
Сообщений: 20,056
21.07.2013, 11:37 8
Мне кажется, что если:

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

то самое логичное - это (F# + C#)
1
serrr
442 / 11 / 1
Регистрация: 08.01.2013
Сообщений: 28
21.07.2013, 16:32 9
sigma7i, Вот, что-то еще есть:
http://www.haskell.org/haskellwiki/FFI_Introduction
http://www.haskell.org/haskellwiki/FFI_cook_book
http://www.haskell.org/haskellwiki/FFI_complete_examples
2
Algiz
161 / 161 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 22:22

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru