将 Haskell 与 VS Code 结合使用

问题描述 投票:0回答:2

我无法让 VS Code 显示 Haskell 类型悬停。此外,没有自动完成功能。我所看到的只是我用鼠标悬停的元素上方的一个小空框(请参阅“getArgs”函数右侧的小框)。

我使用的扩展是“Hasklly”,尽管我也尝试过 Atom 编辑器的扩展,结果相似。

以前有人遇到过类似的问题吗? 我用:

  • VS代码:1.27.1
  • ghc:8.0.2
  • ghc-mod:5.8.0.0
  • 哈斯凯利:0.5.4
  • Intero:0.1.32
  • 操作系统:Linux Mint 19

免责声明:我对 Haskell 还很陌生,所以我可能在这里做了一些非常错误的事情。抱歉,还在学习;)。

编辑:

正如评论中所建议的,我已切换到 Haskero 并取得了一些小进步。有一个类型悬停,但它包含一些垃圾。

可能重要的一件事:我正在遵循本教程:https://www.youtube.com/watch?v=a7R-2vtPLDM,所以我使用 cabal,而不是 stack。这有关系吗?

编辑2:

我尝试过使用堆栈,但结果更糟。 VS Code 扩展崩溃并显示以下代码:

The following GHC options are incompatible with GHCi and have not been passed to it: -threaded
Configuring GHCi with the following packages: MyProject

Warning: Didn't find expected autogen file:
         <path_to_project>/MyProject/.stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build/autogen/cabal_macros.h

Warning: Didn't find expected autogen file:
         <path_to_project>/MyProject/.stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build/MyProject-exe/autogen/cabal_macros.h
<home>/.stack/programs/x86_64-linux/ghc-8.4.3/lib/ghc-8.4.3/package.conf.d/package.cache: GHC.PackageDb.readPackageDb: inappropriate type (Not a valid Unicode code point!)


  Code: -32603 

编辑3:

仍然不好,但更接近了。对于内置值和同一包内,我可以看到漂亮的类型悬停。但是,当在其他模块中引用时,我看到模块中的值出现错误(即使它们彼此相邻并且一切都编译得很好):

有什么想法可以帮助解决这个问题吗?

haskell visual-studio-code ide code-completion
2个回答
2
投票

作为最快的解决方案,我决定安装 Haskell IDE Engine(HIE:https://github.com/haskell/haskell-ide-engine)并将其与 Atom 一起使用。虽然没能用 VS code 配置它,但现在还可以。


1
投票

我知道已经过去很长时间了,但我想分享我过去的经历。也许有人利用了它,并且不需要经历同样的问题列表。

在花费数小时阅读文章并与不同的人交谈之后,我得出的结论是,开始使用 Haskell 的最佳方法是......开始使用 Haskell。我安装了 ghc 平台和 cabal,使用 cabal 新型命令,这似乎就足够了。最起码到现在。另外,我决定使用 VSCode 和一个简单的语法突出显示扩展。

我发现任何引入更多类似 IDE 功能的尝试都不太可能成功,因为 Haskell 是一种非常复杂的语言。 “hie”是一个不错的小主意,但它对我来说缺乏稳定性和可靠性 - 随着时间的推移,我学会了如何安装它,但对我来说,它仅适用于简单的情况,并且在更现实的应用程序中会崩溃。

最近我一直在尝试创建一个非常简单的 DB + Web API 应用程序,但在让两个 monad 正确地相互通信方面我遇到了困难。我认为无论如何都没有 IDE 可以为我做到这一点。当我发现很难写下函数的正确类型时,我会使用“cabal new-repl”,加载我的模块,用“:t”检查所需的类型,并尝试解密输出。这不是一个完美的解决方案,但同样 - 足够好。

编辑 2021 年 1 月 12 日

我在 Haskell 上花了更多的时间,我的理解也增加了。我搬到了 NixOS,它似乎可以很好地处理所有事情。

这是包含我的 NixOS 配置文件的存储库的链接: https://github.com/bratfizyk/dotFiles/tree/master/nixos

“按原样”使用它会安装启用 HIE 支持的 VS Code。你可能只需要安装 VS Code 扩展本身,因为我发现这个功能在 nix 中存在问题,但这是一个简单的过程。

显然,更改用户名:)。否则你会继续使用我的。

我将随着时间的推移更新存储库。

编辑 2024 年 1 月 9 日

我已经重组了我的点文件存储库并迁移到 home-manager 和 flakes:https://github.com/bratfizyk/dotFiles。另外,现在我在我的个人机器上全职使用 NixOS,因此存储库将定期维护,直到〜我失去理智〜我迁移到另一个发行版(目前没有计划)

© www.soinside.com 2019 - 2024. All rights reserved.