Как установить универсальный haskell - PullRequest
2 голосов
/ 21 апреля 2011

после установки объятий, а затем установки ghc6 и установки generic-haskell выдает следующее сообщение: Как это сделать?

# make package
Creating generic-haskell package ...
ghc-pkg: cannot find package generic-haskell
Reading package info from "generic-haskell.cabal.pkg" ... done.
generic-haskell-1.80: missing id field
generic-haskell-1.80: dependency "base-4.2.0.0" doesn't exist (use --force to override)
generic-haskell-1.80: dependency "haskell98-1.0.1.1" doesn't exist (use --force to override)
generic-haskell-1.80: dependency "containers-0.3.0.0" doesn't exist (use --force to override)
make: *** [package] Error 1

в Ubuntu я скомпилировать ghc-6.2.2 получил следующую ошибку

/usr/bin/ghc -M -optdep-f -optdep.depend  -osuf o    -H16m -O HaskTags.hs

on the commandline:

    Warning: -optdep-f is deprecated: Use -dep-makefile instead
------------------------------------------------------------------------
==fptools== make boot - --no-print-directory -r;
 in /home/martin/ghc-6.2.2/ghc/utils/ghc-pkg
------------------------------------------------------------------------
/usr/bin/ghc -M -optdep-f -optdep.depend  -osuf o    -H16m -O -cpp -DPKG_TOOL -DWANT_PRETTY Main.hs Package.hs ParsePkgConfLite.hs Version.hs

on the commandline:
    Warning: -optdep-f is deprecated: Use -dep-makefile instead
make all
/usr/bin/ghc -H16m -O -cpp -DPKG_TOOL -DWANT_PRETTY    -c Main.hs -o Main.o  -ohi Main.hi

Main.hs:496:11:
    Ambiguous type variable `e' in the constraint:
      `Exception.Exception e'
        arising from a use of `Exception.throw' at Main.hs:496:11-25
    Possible cause: the monomorphism restriction applied to the following:
      my_catch :: forall a. IO a -> (e -> IO a) -> IO a
        (bound at Main.hs:499:0)
      my_throw :: forall a. e -> a (bound at Main.hs:496:0)
    Probable fix: give these definition(s) an explicit type signature
                  or use -XNoMonomorphismRestriction

Main.hs:498:13:
    Ambiguous type variable `e1' in the constraint:
      `Exception.Exception e1'
        arising from a use of `Exception.catch' at Main.hs:498:13-27
    Possible cause: the monomorphism restriction applied to the following:
      eval_catch :: forall a. a -> (e1 -> IO a) -> IO a
        (bound at Main.hs:498:0)
    Probable fix: give these definition(s) an explicit type signature
                  or use -XNoMonomorphismRestriction
make[4]: *** [Main.o] Error 1
make[3]: *** [boot] Error 2
make[2]: *** [boot] Error 1
make[1]: *** [boot] Error 1

Кто-нибудь установил старую версию GHC и общий haskell в ubuntu 10?

Есть много пар версий, я попробовал ghc-6.2.2 из-за ошибки, мне нужно удалить Ubuntu 10, чтобы установить более старую версию Ubuntu, чтобы она работала? какая версия ubuntu для какой версии ghc работает? http://www.cs.uu.nl/research/projects/generic-haskell/compiler.html

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Я попытался установить generic-haskell из источника, мне удалось, и я могу описать, как я это исправил.Моя инсталляционная платформа - Haskell Platform 2011.2.0.1-x86_64, но следующие инструкции несколько более общие.

Я столкнулся с тремя проблемами, включая первую, которую вы описали (№ 3 ниже).Для других пользователей я также опишу первые два, которые вы, вероятно, также решили.

1) Другие пользователи должны сначала исправить ошибку в зависимости от изменения типа Data.Map.lookup, для containers> =0.2.0.0: раньше он возвращал Monad m => m bcontainers-1.0.0.0), теперь он возвращает только Maybe b.Я добавил вызовы к Data.Maybe.maybeToList, чтобы исправить несколько сайтов вызовов, которым нужно использовать тип списка;Бьюсь об заклад, вы исправили ту же ошибку в некотором роде.Это исправление можно найти по адресу: http://hpaste.org/47624.

2) Еще одна ошибка, с которой я столкнулся в GHC 7, заключается в том, что скрипт настройки не понимает, что он новее, чем GHC 6.8, поэтому он также должен зависетьконтейнеры.настроить вывод, включив эту строку:

проверка, разбит ли базовый пакет (GHC 6.8 или новее) ... нет

Чтобы это исправить, вам нужно заменить

if test $ghc_ma -ge 6 -a $ghc_mi -ge 8; then

с

if test $ghc_ma -eq 6 -a $ghc_mi -ge 8 -o $ghc_ma -ge 7; then

3) Чтобы исправить вашу проблему, вам нужно отредактировать build/generic-haskell.cabal.pkg (при условии, что вы не выполняете установку на месте с make-на месте).Вам нужно добавить строку id: и исправить строку зависимости, чтобы использовать идентификаторы пакетов, присутствующих в вашей системе, вместо имен пакетов.Вы можете узнать идентификаторы, используя следующие команды (выходные данные на моей системе включены):

$ ghc-pkg field base id
id: base-4.3.1.0-f5c465200a37a65ca26c5c6c600f6c76
$ ghc-pkg field haskell98 id
id: haskell98-1.1.0.1-150131ea75216886448a7146c9e0526b
$ ghc-pkg field containers id
id: containers-0.4.0.0-b4885363abca642443ccd842502a3b7e

Тогда изменение на build/generic-haskell.cabal.pkg будет:

-depends:        base-4.3.1.0
-                haskell98-1.1.0.1
-                containers-0.4.0.0
+depends:        base-4.3.1.0-f5c465200a37a65ca26c5c6c600f6c76
+                haskell98-1.1.0.1-150131ea75216886448a7146c9e0526b
+                containers-0.4.0.0-b4885363abca642443ccd842502a3b7e

Кроме того, вам нужнодобавить строку идентификатора к тому же файлу - подойдет любой идентификатор, если вы измените его, если / когда переустановите библиотеку.Здесь я использовал:

id:             generic-haskell-1.80-lib-md5sum-2a7ae9d60440627618ad0b0139ef090b

Я также выровнял все поля с пробелами, как в существующих файлах.Ссылка на синтаксис этого файла находится в: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/packages.html#installed-pkg-info

1 голос
/ 21 апреля 2011

Очевидно, пакет generic-haskell зависит от старой версии base.

. Платформа Haskell определяет base-4.3.1.0, в то время как generic-haskell требуется более старая версия.,Пожалуйста, свяжитесь с сопровождающими или, возможно, установите более старую версию GHC.

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