Матричное представление Clojure

Это почти повторение отношения первого порядка, за исключением пола, который запутывает вещи. Если вам не нужно слово,

http://en.wikipedia.org/wiki/Recurrence_relation

Кроме того, не используйте bash.

7
задан clartaq 4 November 2009 в 14:59
поделиться

4 ответа

Incanter предоставляет оболочку для некоторых из Parallel Colt , включая то, что выглядит довольно приличной реализацией быстрых распараллеленных плотных матриц, которые взаимодействуют с библиотеками Clojure на основе seq. Я не использовал его, но это должно быть то, что вы ищете.

Пример .

10
ответ дан 6 December 2019 в 09:20
поделиться

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

2
ответ дан 6 December 2019 в 09:20
поделиться

Я не эксперт, но все же вот мое мнение :)

list-of-lists, вероятно, наиболее естественная идиома Clojure для представления матриц. Эта структура также хорошо подходит для отображения / сокращения видов операций. Clojure также довольно эффективен в обработке последовательностей - вероятно, лучше, чем большинство альтернатив.

Я не могу поклясться в этом, но я думаю, что видел, как Clojure усердно работает с 3 или всеми 4 моими процессорами над программами, которые я написал, которые были функциональными. по стилю, но не пытался быть параллельным. Я подозреваю, что компилятор сам находит некоторые возможности для параллельной обработки.

Я думаю, что типы последовательностей, созданные Clojure, будут работать как списки в Java или, по крайней мере, будут Iterable. Вероятно, этого достаточно для того, что вы хотите, хотя вы можете столкнуться с проблемами, если попытаетесь рассматривать эти структуры как изменяемые в Java.

К спискам лучше всего обращаться последовательно. Если вы планируете много прыгать в матрице, вектор векторов может подойти вам немного лучше с точки зрения производительности. Я подозреваю, что beats использует функцию nth .

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

вектор векторов может подойти вам немного лучше с точки зрения производительности. Я подозреваю, что beats использует функцию nth .

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

вектор векторов может подойти вам немного лучше с точки зрения производительности. Я подозреваю, что beats использует функцию nth .

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

-1
ответ дан 6 December 2019 в 09:20
поделиться

Clojure Рича Хики - это Лисп на основе JVM, который представляет PersistentVector (не PersistentList) с 32-сторонним деревом.

Если вы хотите написать свой собственный тип матрицы, я бы использовал PersistentVector , в противном случае лучшим выбором было бы использовать Parallel Colt с Incanter.

0
ответ дан 6 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

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