在 VS 代码中使用 Haskell
Using Haskell with VS Code
我无法让我的 VS 代码显示 Haskell 类型悬停。此外,没有自动完成功能。我所看到的只是一个小的空框,就在我用鼠标悬停的元素上方(请参阅 "getArgs" 函数右侧的小框)。
我使用的扩展名是 "Haskelly",尽管我也尝试过 Atom 编辑器的扩展名并且结果相似。
有没有人遇到过类似的问题?
我使用:
- VS 代码:1.27.1
- ghc: 8.0.2
- ghc-mod: 5.8.0.0
- 哈斯凯利:0.5.4
- Intero: 0.1.32
- OS: Linux 薄荷 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:
还是不行,但更接近了。对于内置值和在同一个包中,我可以看到漂亮的类型悬停。但是,当在其他 mod 规则中引用我的 mod 规则时,我看到错误的值(即使它们彼此相邻并且一切都编译得很好):
有什么想法可以帮助解决这个问题吗?
作为最快的解决方案,我决定安装 Haskell IDE 引擎(HIE:https://github.com/haskell/haskell-ide-engine)并将其与 Atom 一起使用。虽然没有设法用 VS 代码配置它,但现在没问题。
我知道已经很久了,但我想分享一下我过去的经历。也许有人会利用它,而不需要经历相同的问题列表。
在花了几个小时阅读文章并与不同的人交谈后,我得出的结论是,开始使用 Haskell 的最佳方法是……只是开始使用 Haskell。我安装了 ghc 平台和 cabal,使用 cabal 新式命令,这似乎就足够了。最起码到现在。另外,我决定使用 VSCode 和一个简单的语法高亮扩展。
我发现任何引入更多类似 IDE 的特性的尝试都不太可能成功,因为 Haskell 是一种非常复杂的语言。 “hie”是个不错的小主意,但它对我来说缺乏稳定性和可靠性——随着时间的推移,我学会了如何安装它,但对我来说,它只适用于简单的情况,并且在更实际的应用程序中会崩溃。
最近我一直在尝试创建一个非常简单的 DB + Web API 应用程序,但我一直很难让两个 monad 正确地相互对话。我认为无论如何都没有 IDE 可以为我做这件事。当我发现很难写下函数的正确类型时,我会使用“cabal new-repl”,加载我的模块,用“:t”检查所需的类型并尝试解密输出。不是一个完美的解决方案,但再次 - 足够好。
编辑 2021 年 1 月 12 日
我花了更多的时间在 Haskell 上,我的理解也增加了。我搬到了 NixOS,它似乎可以很好地处理所有事情。
这是一个 link 我的 NixOS 配置文件的回购:
https://github.com/bratfizyk/dotFiles/tree/master/nixos
“按原样”使用它会安装启用 HIE 支持的 VS Code。你可能只需要自己安装 VS Code 扩展,因为我发现这个功能在 nix 中有问题,但这是一个简单的过程。
显然,更改用户名:)。否则你会继续使用我的。
我会随着时间的推移更新存储库。
我无法让我的 VS 代码显示 Haskell 类型悬停。此外,没有自动完成功能。我所看到的只是一个小的空框,就在我用鼠标悬停的元素上方(请参阅 "getArgs" 函数右侧的小框)。
有没有人遇到过类似的问题? 我使用:
- VS 代码:1.27.1
- ghc: 8.0.2
- ghc-mod: 5.8.0.0
- 哈斯凯利:0.5.4
- Intero: 0.1.32
- OS: Linux 薄荷 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:
还是不行,但更接近了。对于内置值和在同一个包中,我可以看到漂亮的类型悬停。但是,当在其他 mod 规则中引用我的 mod 规则时,我看到错误的值(即使它们彼此相邻并且一切都编译得很好):
有什么想法可以帮助解决这个问题吗?
作为最快的解决方案,我决定安装 Haskell IDE 引擎(HIE:https://github.com/haskell/haskell-ide-engine)并将其与 Atom 一起使用。虽然没有设法用 VS 代码配置它,但现在没问题。
我知道已经很久了,但我想分享一下我过去的经历。也许有人会利用它,而不需要经历相同的问题列表。
在花了几个小时阅读文章并与不同的人交谈后,我得出的结论是,开始使用 Haskell 的最佳方法是……只是开始使用 Haskell。我安装了 ghc 平台和 cabal,使用 cabal 新式命令,这似乎就足够了。最起码到现在。另外,我决定使用 VSCode 和一个简单的语法高亮扩展。
我发现任何引入更多类似 IDE 的特性的尝试都不太可能成功,因为 Haskell 是一种非常复杂的语言。 “hie”是个不错的小主意,但它对我来说缺乏稳定性和可靠性——随着时间的推移,我学会了如何安装它,但对我来说,它只适用于简单的情况,并且在更实际的应用程序中会崩溃。
最近我一直在尝试创建一个非常简单的 DB + Web API 应用程序,但我一直很难让两个 monad 正确地相互对话。我认为无论如何都没有 IDE 可以为我做这件事。当我发现很难写下函数的正确类型时,我会使用“cabal new-repl”,加载我的模块,用“:t”检查所需的类型并尝试解密输出。不是一个完美的解决方案,但再次 - 足够好。
编辑 2021 年 1 月 12 日
我花了更多的时间在 Haskell 上,我的理解也增加了。我搬到了 NixOS,它似乎可以很好地处理所有事情。
这是一个 link 我的 NixOS 配置文件的回购: https://github.com/bratfizyk/dotFiles/tree/master/nixos
“按原样”使用它会安装启用 HIE 支持的 VS Code。你可能只需要自己安装 VS Code 扩展,因为我发现这个功能在 nix 中有问题,但这是一个简单的过程。
显然,更改用户名:)。否则你会继续使用我的。
我会随着时间的推移更新存储库。