LINUX.ORG.RU

Stack haskell, ubuntu, 14.04 x32, libgmp

 , ,


0

2

На ноуте ubuntu 14.04 x32. Поставил haskell platform. Cabal работает. Пробую поставить haskell stack. Пишет что не найдена libgmp.so.10. Она находится в папке usr/lib/x86_64-gnu-linux. Сделал симлинк, в usr/lib/, выдаётся ошибка что libgmp для x64.

- Откуда вообще в x32 системе папка x86_64?

- Зачем при переустановке libgmp через апт-гет тянется пакет libgmp:amd64?

- Почему cabal находит нужную libgmp для x32, а stack нет?

- Как проверить, ту или иную либу на x32/x64 с помощью терминала быстро?

- Ну и как запустить stack на x32?



Последнее исправление: cetjs2 (всего исправлений: 3)

Откуда вообще в x32 системе папка x86_64?

В линуксе нет папок, неужели нельзя запомнить? Или это мы с винды только слезли?

iVS ★★★★★
()

ставить ghc стеком большая странность минимум (хотя это моё личное мнение, которое далеко не всеми поддерживается)

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

которое далеко не всеми поддерживается)

В хаскеле я нуб. Общественное мнение более к стэку расположено, так что так.

BuzzBomb
() автор топика
Ответ на: комментарий от littlechris

ну и в http://packages.ubuntu.com/trusty/libgmp10 i386 вполне себе есть

Да, только почему при

apt-get install libgmp тянется libgmp:amd64.

Это у меня в консоле на x32 ноуте выводится. Может баг apt? Или фича? Я не пойму.

BuzzBomb
() автор топика
Ответ на: комментарий от BuzzBomb

ну enjoy your stack, раз расположено. Поставь тот дистр, для которого бинарники сделаны и радуйся.

qnikst ★★★★★
()
Ответ на: комментарий от Virtuos86

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

iVS ★★★★★
()
Ответ на: комментарий от iVS

Хачкель уже так опопсел, что его выбирают нубы для написания хоумпаг?)

Умники-комментаторы))) Ладно, поясню для благородных умом, что «нуб» это первый этап изучения чего-либо.

ну enjoy your stack, раз расположено. Поставь тот дистр, для которого бинарники сделаны и радуйся.

Привет кэп!

ЗЫ. Решил через sudo apt-get install -f. Вощем, заработало, но почему так апт работает, так и не понял.

BuzzBomb
() автор топика
Ответ на: комментарий от iVS

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

Толсто. Как у Вас в монитор то пролезло?)

BuzzBomb
() автор топика
Ответ на: комментарий от BuzzBomb

Ты, пожалуйста, определись для начала: ты нуб или спец. Когда дойдешь до функциональных структур данных, кури Chris Okasaki «Purely Functional Data Structures».

iVS ★★★★★
()
Ответ на: комментарий от BuzzBomb

ЗЫ. Решил через sudo apt-get install -f. Вощем, заработало, но почему так апт работает, так и не понял.

вот так и надо, а не через stack setup, который судя по описанию проблемы использовался. Можно ещё hvr ppa добавить, тогда вообще отлично будет.

qnikst ★★★★★
()
Ответ на: комментарий от iVS

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

Почему это? Часто вполне возможно. Только IO придется дописывать. Иногда бывает лучше императивную структуру использовать, чем чистую функциональную. Все от задачи и требований зависит.

dave ★★★★★
()
Ответ на: комментарий от dave

«В умелых руках и х@# — поварешка», истинно! Но, если открыть «Алгоритмы» Седжевика, взять тот же heap и реализовать в нем операцию insert (через алгоритм swim) — получится очень нетривиальная задача. С Data.Heap знаком, но там реализация insert не через swim, а свой функциональный подход.

iVS ★★★★★
()
Ответ на: комментарий от iVS

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

dave ★★★★★
()
Ответ на: комментарий от dave

Седжевика нет под рукой

http://algs4.cs.princeton.edu/24pq/

и алгоритм был у меня императивный для скорости

Скорость insert должна быть порядка O(log n), если есть другие алгоритмы — ничего против не имею.

Те реализации heap в haskell, что я видел, опираются на Okasaki, и insert выглядит там совсем по-другому.

iVS ★★★★★
()
Ответ на: комментарий от iVS

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

Например, какие?

sf ★★★
()
Ответ на: комментарий от sf

Ниже по тексту я привел пример Heap, а вообще к функциональным структурам данных — это к книге Okasaki. Похоже, он до сих пор актуален.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Так у меня insert и имеет именно такую сложность. Сейчас вечером уже не стану проверять по твоей ссылке, поздно, но у меня используется двоичный (бинарный) хип на основе массивов для реализации очереди приоритетов. Все работает быстро. Алгоритм императивнее некуда, но как я написал выше, использую хвостовую рекурсию для циклов.

Посыл в том, что практически все императивные алгоритмы можно реализовать на Haskell в монаде IO. Сложность может быть только с тем, что монада IO не всегда доступна. Как минимум, нужны мутабельные ссылки и иногда еще мутабельные массивы.

Кстати, мой код с бинарным хипом на Haskell получился даже чуточку быстрее, чем аналогичный на F# и Scala.

dave ★★★★★
()
Ответ на: комментарий от anonymous

x32 и ia-32(x86, i386) — разные вещи, вендузятничек.

Первый ответ по существу.

BuzzBomb
() автор топика

Вот вариант который должен работать практически везде:

  • Ставишь из репозитория cabal-install и ghc, неважно на сколько там эти пакеты будут старые.
  • Cамообновляем cabal $ cabal install cabal-install и им-же компилим и устанавливаем stack $ cabal install stack
  • И после stack setup можно спокойно удалять пакеты установленные в первом пункте, возможно потребуется libgmp10 или libgmp-dev из твоего репозитория
Deleted
()
Ответ на: комментарий от Deleted

Вот вариант который должен работать практически везде:

Спасибо, уже решил через установку версии amd64.

x32 и ia-32(x86, i386) — разные вещи, вендузятничек.

BuzzBomb
() автор топика
Ответ на: комментарий от iVS

Ну, да, очень похоже, что этот алгоритм у меня и реализован на языке Haskell. Двоичный хип на основе двух массивов: для ключей и значений. Нужны всего лишь мутабельные ссылки и мутабельные массивы. Все это есть в монаде IO.

dave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.