Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 无法引用包_Haskell_Pandoc - Fatal编程技术网

Haskell 无法引用包

Haskell 无法引用包,haskell,pandoc,Haskell,Pandoc,我无法运行(或编译)简单脚本,因为据报道缺少Text.Pandoc.JSON依赖项。这个问题与另一个问题类似: 以下是脚本: import Text.Pandoc.JSON pagebreakXml :: String pagebreakXml = "<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>" pagebreakBlock :: Block p

我无法运行(或编译)简单脚本,因为据报道缺少
Text.Pandoc.JSON
依赖项。这个问题与另一个问题类似:

以下是脚本:

import Text.Pandoc.JSON

pagebreakXml :: String
pagebreakXml = "<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>"

pagebreakBlock :: Block
pagebreakBlock = RawBlock (Format "openxml") pagebreakXml

blockSwapper :: Block -> Block
blockSwapper (Para [Str "<div class=\"docxPageBreak\"></div>"])  = pagebreakBlock
blockSwapper blk = blk

main = toJSONFilter blockSwapper
安装大约需要20分钟

现在,当我尝试运行它时,我得到以下结果:

$ runghc -v docx-page-filter.hs
Glasgow Haskell Compiler, Version 8.8.3, stage 2 booted by GHC version 8.6.3
Using binary package database: /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d/package.cache
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts-1.0
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.18 milliseconds, allocated 0.056 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 3.22 milliseconds, allocated 1.706 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.029 megabytes
Loading package ghc-prim-0.5.3 ... linking ... done.
Loading package integer-gmp-1.0.2.0 ... linking ... done.
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name liblibiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv
Loading package base-4.13.0.0 ... linking ... done.
Search directories (user):
Search directories (gcc):
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.07 milliseconds, allocated 0.044 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.03 milliseconds, allocated 0.014 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.05 milliseconds, allocated 0.028 megabytes
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.10 milliseconds, allocated 0.061 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.04 milliseconds, allocated 0.022 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.065 megabytes
*** Chasing dependencies:
Chasing modules from:
!!! Chasing dependencies: finished in 0.04 milliseconds, allocated 0.021 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep []
Upsweep completely successful.
*** Deleting temp files:
Deleting:
*** Chasing dependencies:
Chasing modules from: *docx-page-filter.hs
!!! Chasing dependencies: finished in 0.60 milliseconds, allocated 0.334 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep
  [NONREC
      ModSummary {
         ms_hs_date = 2020-07-01 09:51:29.83381948 UTC
         ms_mod = Main,
         ms_textual_imps = [(Nothing, Prelude), (Nothing, Text.Pandoc.JSON)]
         ms_srcimps = []
      }]
*** Deleting temp files:
Deleting:
compile: input file docx-page-filter.hs
*** Checking old interface for Main (use -ddump-hi-diffs for more details):
[1 of 1] Compiling Main             ( docx-page-filter.hs, interpreted )
*** Parser [Main]:
!!! Parser [Main]: finished in 0.35 milliseconds, allocated 0.332 megabytes
*** Renamer/typechecker [Main]:
!!! Renamer/typechecker [Main]: finished in 1.57 milliseconds, allocated 0.021 megabytes

docx-page-filter.hs:1:1: error:
    Could not find module ‘Text.Pandoc.JSON’
    Locations searched:
      Text/Pandoc/JSON.hs
      Text/Pandoc/JSON.lhs
      Text/Pandoc/JSON.hsig
      Text/Pandoc/JSON.lhsig
  |
1 | import Text.Pandoc.JSON
  | ^^^^^^^^^^^^^^^^^^^^^^^
Upsweep partially successful.
*** Deleting temp files:
Deleting:
Failed, no modules loaded.
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
$
当我试图通过
ghc--make-v docx page filter.hs编译它时,我得到了类似的输出

我注意到可能有帮助的事情:

  • 上面的输出包含以下行:

    Search directories (user):
    Search directories (gcc):
    
    这是否意味着安装的库不在编译器的搜索路径中?是否可以手动告诉编译器在哪里查找包

  • 以下命令不输出任何内容:

    $ cabal list --installed | grep pandoc
    $
    $ ghc-pkg list | grep pandoc
    $
    
    但是,运行以下命令会显示
    pandoc

    $ ls -l /Users/eugene/.cabal/store/ghc-8.8.3/ | grep pndc
    drwxr-xr-x    5 eugene  staff   160 Jul  1 15:07 pndc-2.10-1cd05aed
    drwxr-xr-x    5 eugene  staff   160 Jul  1 15:07 pndc-2.10-e61ae373
    drwxr-xr-x    5 eugene  staff   160 Jul  1 14:52 pndc-typs-1.21-39168129
    $
    
  • 尝试安装或重新安装
    pandoc
    会导致无操作:

    $ cabal install pandoc
    Resolving dependencies...
    Up to date
    Symlinking 'pandoc'
    $
    $ cabal install pandoc --reinstall
    Resolving dependencies...
    Up to date
    Symlinking 'pandoc'
    $
    

有人能发现我做错了什么吗?我不需要
cabal.project
文件或任何东西,我需要的是编译一个单独的文件并执行它。但我可以尝试探索
cabal.project

几轮谷歌搜索让我意识到,为了指定包的路径,必须使用选项

就我而言,为了编译文件,我必须这样做:

ghc --make -v docx-page-filter.hs -package-db=/Users/eugene/.cabal/store/ghc-8.8.3/package.db
关于这一问题的更多信息,请在这里对一个问题做出极好的回答:

ghc --make -v docx-page-filter.hs -package-db=/Users/eugene/.cabal/store/ghc-8.8.3/package.db