Если ваша банка находится на пути к классам:
InputStream is = YourClass.class.getResourceAsStream("1.txt");
Если она не на пути к классам, вы можете получить к ней доступ через:
URL url = new URL("jar:file:/absolute/location/of/yourJar.jar!/1.txt");
InputStream is = url.openStream();
В hackageDB есть библиотека Haskell для числовых данных: hmatrix . Он основан на LAPACK, BLAS и GSL (Научная библиотека GNU).
Но вы должны иметь в виду, что императивные алгоритмы могут быть легко переведены на чисто функциональные языки с использованием монад (точнее, преобразователей состояний). Фактически, любая эффективная реализация на месте обычно должна использовать такой механизм для предоставления изменяемых переменных в чисто функциональных языках.
Что касается следования функциональному стилю, во многих случаях это невозможно. Для многих проблем не известны (эффективные) функциональные подходы. Конечно, можно заставить такие алгоритмы работать, например, в Haskell, но они победили » Они выглядят сильно иначе, чем если бы они были написаны на Matlab, Fortran или C.
РЕДАКТИРОВАТЬ:
Это как очевидная несовместимость, так и проблема, которая была первой:
Я действительно думаю, что чисто функциональный язык, такой как Haskell, может быть полезен для алгоритмов кодирования: можно унифицировать математическое описание, алгоритм самого себя и своего рода типо-ориентированное доказательство (то есть с использованием изоморфизма Карри-Ховарда ) в одном и том же фрагменте кода.
Поскольку большая часть усилий была и остается направленной на императивные решения, функциональные аналоги просто неизвестны. Под функциональными аналогами я подразумеваю код, который должным образом выражает функциональное предназначение и стиль.Я действительно думаю, что чисто функциональный язык, такой как Haskell, может быть полезен для алгоритмов кодирования: можно унифицировать математическое описание, алгоритм самого себя и своего рода типо-ориентированное доказательство (то есть с использованием изоморфизма Карри-Ховарда ) в одном и том же фрагменте кода.
Поскольку большая часть усилий была и остается направленной на императивные решения, функциональные аналоги просто неизвестны. Под функциональными аналогами я подразумеваю код, который должным образом выражает функциональное предназначение и стиль.Я действительно думаю, что чисто функциональный язык, такой как Haskell, может быть полезен для алгоритмов кодирования: можно унифицировать математическое описание, алгоритм самого себя и своего рода типо-ориентированное доказательство (то есть с использованием изоморфизма Карри-Ховарда ) в одном и том же фрагменте кода.
Под функциональными аналогами я подразумеваю код, который должным образом выражает функциональное предназначение и стиль.Я действительно думаю, что чисто функциональный язык, такой как Haskell, может быть полезен для алгоритмов кодирования: можно унифицировать математическое описание, алгоритм самого себя и своего рода типо-ориентированное доказательство (то есть с использованием изоморфизма Карри-Ховарда ) в одном и том же фрагменте кода.
Под функциональными аналогами я подразумеваю код, который должным образом выражает функциональное предназначение и стиль.Я действительно думаю, что чисто функциональный язык, такой как Haskell, может быть полезен для алгоритмов кодирования: можно унифицировать математическое описание, алгоритм самого себя и своего рода типо-ориентированное доказательство (то есть с использованием изоморфизма Карри-Ховарда ) в одном и том же фрагменте кода.
Я бы использовал LAPACK как черный ящик из функционального языка, а не пытался его переписать. LAPACK был протестирован, настроен, оптимизирован и т.д. на протяжении десятилетий некоторыми чрезвычайно умными людьми. Я бы его не трогал.
В духе превосходной Структура и интерпретация компьютерных программ , существует также Структура и интерпретация классической механики . В этой книге Scheme используется для пояснения множества нечетких математических обозначений, используемых в вариационном подходе к механике.
Краеугольным камнем книги является пакет scmutils
, который включает функциональный подход ко многим вычислительным вычислениям. такие задачи, как интеграция и минимизация.
Некоторые системы компьютерной алгебры (например, Maxima) внутренне используют языки на основе LISP для представления символьных вычислений / синтаксических деревьев.
Примеры математических, функциональных языков:
http: / /en.wikipedia.org/wiki/J_(programming_language)
http://en.wikipedia.org/wiki/K_(programming_language)
В любом случае есть несколько математических задач и алгоритмов, которые невозможно сформулировать хорошо или эффективно в функциональном стиле. Эффективная реализация всегда будет обязательной. Пример: Сито Эратосфена
Я считаю, что математика использует свой собственный функциональный язык.
Определите «серьезный». Помните, что функциональные языки (кроме LISP) довольно новы - оригинальные статьи Бэкеса были только в конце 70-х годов, а функциональные языки производственной инженерии - довольно новые. Все известные и общепринятые числовые пакеты основаны на алгоритмах и кодах, начиная с конца 60-х - начала 70-х годов. s - BLAS был впервые опубликован в 1979 году. Поскольку для производственного использования люди склонны тяготеть к хорошо известным и надежным пакетам, старые коды FORTRAN имеют большое значение.
Но они, безусловно, существуют. люди, выполняющие числовую обработку с помощью функциональных языков. Как указано в другом ответе, Mathematica все больше становится функциональным числовым языком и все чаще реализуется сама по себе.
Отличный вопрос!
Я был одним из немногих пионеров в этой области вот уже несколько лет, и только недавно мы достигли точки, когда можно получить производительность, подобную Fortran, и Питоноподобная лаконичность в то же время для широкого круга задач. Подробно изучив все доступные функциональные языки и их реализации, я решил сосредоточить свои усилия на статически типизированных нечистых функциональных языках: языке программирования OCaml с открытым исходным кодом и языке программирования Microsoft F #. для .NET.
Моя книга OCaml для ученых посвящена научным вычислениям на языке программирования OCaml с использованием Linux или Mac OS X. Моя книга F # для ученых посвящена научным вычислениям с языком программирования Microsoft F # с использованием Windows и Visual Studio. Моя компания также продает библиотеки F # for Numerics и F # for Visualization , которые полностью написаны на F # и широко используют функциональное программирование как внутри компании, чтобы улучшить краткость, ясность и удобство обслуживания, так и за ее пределами. сделать библиотеку проще в использовании. Например, первоклассные функции позволяют очень легко строить графики, например, построение синусоидальной функции:
Plot([Function sin], (-5., 5.))
F # для визуализации даже попытается визуализировать любое значение любого типа, поэтому вы можете дать ему матрицу произвольных значений. рациональные числа, и он отобразит результат в виде наборной математики .
Мы добились большого успеха в написании кода для научных вычислений в функциональном стиле на языках OCaml и F #. В частности, F # упрощает написание универсального высокопроизводительного параллельного кода без потери производительности для абстракции. Таким образом, вы можете реализовать QR-разложение, которое работает для матриц любого типа (одинарная точность, двойная точность, сложная или даже символьная!), И даже превосходит производительность настроенных производителем библиотек, таких как Intel MKL !
Наконец, я должен отметить, что Mathematica каким-то образом проложила этот путь задолго до меня. Однако их решение состояло в том, чтобы объединить огромную стандартную библиотеку числовых и символьных функций, написанных на C, с обычным императивным стилем и предоставить довольно рудиментарный функциональный язык программирования для вызова этих функций.