【问题标题】:Network module not found未找到网络模块
【发布时间】:2020-08-22 13:44:50
【问题描述】:

我是haskell的新手,请原谅我缺乏知识

我正在尝试构建 TCP 服务器并正在使用网络模块

import Network (listenOn, withSocketsDo, accept, PortID(..), Socket)

在编译过程中我收到一个错误,提示找不到网络模块,cabal 似乎没有找到网络模块,ghc-pkg list 什么也没有显示

【问题讨论】:

    标签: haskell networking module


    【解决方案1】:

    使用hoogle to search for functions you need。看起来您可能正在寻找 network 包,它导出了几个不同的模块(例如 Network.Socket

    包名和模块名是完全不同的东西。多个包可以导出相同的模块名称。一般来说,包名永远不会出现在你的 haskell 代码中(尽管有包限定导入的扩展)

    【讨论】:

      【解决方案2】:

      一些术语:你用 cabal 安装的是一个“包”。您在代码中导入的是“模块”。

      我正在尝试构建 TCP 服务器并正在使用网络模块

      据我所知,任何现代 Haskell 包中都没有“网络”模块。这将是您的第一个问题。

      导入网络(listenOn、withSocketsDo、accept、PortID(..)、Socket)

      如果您是新手并从资源中了解了此模块和功能,那么请寻找新的东西 - 两年前,网络包发生了变化,不再将“网络”作为模块导出。

      cabal 似乎没有找到网络模块

      cabal 再次安装包,所以您可能指的是网络包。 Cabal 确实知道这个包:

      bash-3.2$ cabal update 2>/dev/null 1>&2 && cabal info network
      * network          (library)
          Synopsis:      Low-level networking interface
      ...
      

      而 ghc-pkg 列表什么也没有显示

      ghc-pkg 这些天真的很低级,坦率地说是不够的。它不处理新 GHC 中使用的包环境。例如,您可以设置 .ghc.environment 并使用其中列出的库,而 ghc-pkg 不会告诉您这些软件包已安装。

      例如下面我安装network 并让cabal 编写一个ghc 环境文件,然后让ghc-pkg 列出网络包(未列出),然后在GHCi 中使用网络包(GHCi 知道读取环境文件) .

      tommd@ovdak /tmp% cabal install --package-env . --lib network
      Resolving dependencies...
      Up to date
      cabal install --package-env . --lib network  2.60s user 0.49s system 95% cpu 3.254 total
      tommd@ovdak /tmp% ghc-pkg list network
      /Users/tommd/.ghcup/ghc/8.10.1/lib/ghc-8.10.1/package.conf.d
          (no packages)
      tommd@ovdak /tmp% ghci
      GHCi, version 8.10.1: https://www.haskell.org/ghc/  :? for help
      Loaded package environment from /private/tmp/.ghc.environment.x86_64-darwin-8.10.1
      package flags have changed, resetting and loading new packages...
      Loaded GHCi configuration from /Users/tommd/.ghci
      Prelude> import Network.Socket
      Prelude Network.Socket>
      

      【讨论】:

        猜你喜欢
        • 2019-04-20
        • 2018-04-15
        • 2020-09-28
        • 2019-09-11
        • 1970-01-01
        • 2020-09-24
        • 2019-09-23
        相关资源
        最近更新 更多