Как я могу использовать функциональное программирование в реальном мире? [закрытый]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
102
задан Dan Rigby 2 May 2012 в 19:38
поделиться

6 ответов

На книжный Реальный мир кажется, что Haskell, что Вы ищете. Можно считать его бесплатно онлайн:

http://book.realworldhaskell.org/

41
ответ дан Apocalisp 24 November 2019 в 04:34
поделиться

F# не содержит волшебной пыли эльфа, которая выдаст функции к различному ЦП или машины. То, что делают F#/Haskell и другие языки функционального программирования, облегчают для Вас писать функции, которые могут быть обработаны независимые от потока или ЦП, на котором они были созданы.

я не чувствую себя хорошо, отправляя ссылку здесь на подкаст, в котором я участвую, кажется немногим прочь, но в Пасущемся эпизоде Кода, где мы говорили с Matt Podwysocki, мы задали тот же вопрос, и он дал некоторые интересные ответы. Существует также много хороших ссылок, касающихся функционального программирования в том эпизоде. Я нашел заголовки ссылки" , Почему Вопросы Функционального программирования ", Который может предоставить некоторые ответы для Вас.

25
ответ дан ScottKoon 24 November 2019 в 04:34
поделиться

Это могло бы также быть интересно: " Функциональное программирование Реального мира "

Примеры находятся в F# и C#, но теория довольно универсальна. Из того, что я читал (предварительный выпуск), это определенно интересно, но до сих пор я думаю, что это заставляет меня хотеть придерживаться все больше C#, пользуясь библиотеками как Параллельные Расширения.

14
ответ дан Marc Gravell 24 November 2019 в 04:34
поделиться

Вы не упоминали, но я принимаю, что Вы используете C++. Одним потенциально простым способом войти функциональный является через C++ / CLI к F#. C++ содержит "волшебную пыль эльфа" (названный IJW: Это Просто Работы), чтобы позволить Вам звонить в и из управляемого кода. С этим, называя код F# почти так же просто, как это от C#.

я использовал это в одной программе (FreeSWITCH), который записан полностью в C/C++. С единственным управляемым С++ / CLI (используют переключатель сброса/), это волшебно переходы в управляемый код, и оттуда, я могу пойти, загружают мои плагины F# и выполняют их. Для создания вещей еще легче для развертывания F# может статически связать все свои зависимости, таким образом, Вы не должны развертывать файлы во время выполнения F#. Еще одна вещь, которая заставляет CLR кодировать привлекательный, состоит в том, что можно передать управляемый код (делегаты) в коде C, и время выполнения автоматически делает преобразователя для Вас.

, Если Вы решаете пойти Haskell путь, функция, Вы будете искать, FFI: Внешний Функциональный Интерфейс. Однако я не думаю, что это даст Вам тот же уровень интеграции как C++ / CLI с F#.

8
ответ дан MichaelGG 24 November 2019 в 04:34
поделиться

Я в настоящее время изучаю Haskell сам, когда Вы начинаете изучать его, это не кажется очень интригующим, потому что полезный опыт - НИЧТО как изучение языка как C#, это - совершенно новый мир, но я заметил, что мог записать очень очень сложные выражения во всего нескольких строках кода, когда я оглянулся назад на код, это было намного более кратко, это было маленьким и трудным. Я абсолютно люблю его! Можно действительно записать реальные программы, которые будут меньшими, легче поддержать, и намного более сложный тогда, большинство других языков позволяет, я голосую за Вас для изучения его!!

Удача.

6
ответ дан Rayne 24 November 2019 в 04:34
поделиться

Поскольку вы упомянули Win32 и библиотеки DLL, я предполагаю, что вы работаете с неуправляемым кодом. В этом случае вам подойдет GHC. В конце прошлого года я написал сервер DDE под Windows, используя FFI для общения с библиотеками MS DDE, и, что удивительно, это был чрезвычайно приятный опыт (особенно с учетом того, что я парень из Unix). FFI в Haskell мощен (даже поддерживает, например, обратные вызовы функций Haskell из C или других библиотек), а проверка типов в Haskell при написании кода уровня C - это как мечта.

Этот последний пункт является одним из важнейших. Преимущества Haskell: потрясающая система типов. Тем не менее, это как любой мощный инструмент; требуется время и усилия, чтобы эффективно использовать его.

Так что да, можно начать с написания небольших фрагментов кода на Haskell, которые связаны с остальной частью вашего кода (хотя вам может быть легче начать с небольших программ Haskell, которые ссылаются на ваш другой код), и это стоит потратить изрядную сумму времени, чтобы узнать об этом и использовать его везде, где только можно. Вы можете в конечном итоге, как и я, спланировать довольно крупный проект, тесно интегрированный с кодом Windows (в моем случае, сложной надстройкой Excel) на Haskell.

4
ответ дан 24 November 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: