要UnicodeSyntax在项目的所有文件中使用语言扩展名,有两个选项:
{-# LANGUAGE UnicodeSyntax #-}extensions: UnicodeSyntax的每个部分(库,可执行文件,测试.cabal文件)。是否有任何理由或最佳做法来选择一个?
我正在使用简单包装stack的标准new-template包装。
我通过堆栈安装stack ghc -- --version了GHC (因此显示GHC-7.10.3)
$ stack install ghcjs
Run from outside a project, using implicit global project config
Using resolver: lts-5.2 from implicit global project's config file: /home/john/.stack/global-project/stack.yaml
The following target packages were not found: ghcjs
Run Code Online (Sandbox Code Playgroud)
一些资源建议ghcjs有点实验性(尽管在后续阶段).
看看http://docs.haskellstack.org/en/stable/ghcjs/我想也许我可以找到stack.yaml并改变它.
要使用堆栈> = 0.1.8的GHCJS,将GHCJS版本放在stack.yaml的编译器字段中......然后
stack setup
$ cat ~/.stack/global-project/stack.yaml
# This is the implicit global project's config file, which is only used when
# 'stack' is run outside of a real project. Settings here …Run Code Online (Sandbox Code Playgroud) Stack可以构建一个docker容器,使用该stack image container命令在服务器上运行您的应用程序(请参阅下面的参考资料).
如何连接到以这种方式创建的docker容器中的Web服务器?
我已经构建了一个简单的应用来证明这个问题.请在此处查看完整代码:https://github.com/seanhess/haskell-docker-example
这个应用程序是建立在stack new最小的变化.这是Main.hs.
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Network.Wai
import Network.HTTP.Types (status200)
import qualified Network.Wai.Handler.Warp as Warp
main :: IO ()
main = Warp.run 8010 app
app :: Application
app req respond = do
(putStrLn $ "Request: " ++ (show req))
(respond $ responseLBS status200 [] "Hello World")
Run Code Online (Sandbox Code Playgroud)
和stack.yaml
resolver: nightly-2016-06-12
image:
container:
name: haskell-docker-example
base: fpco/stack-run
Run Code Online (Sandbox Code Playgroud)
如果您在本地运行它,此应用程序将响应"Hello world".
stack build
stack exec haskell-docker-example
Run Code Online (Sandbox Code Playgroud)
但是如果你构建了docker镜像并启动它:
stack …Run Code Online (Sandbox Code Playgroud) 我的工作流程system-ghc: true专门使用。我希望堆栈在任何时候都无法通过它失败,否则它将访问网络以下载任何内容。是否可以配置(全局或每个项目都可以)?
我有一个名为的haskell包prime-tools.当我stack ghci在包目录中使用时,我希望它能够ghci自动打开一个交互式import prime-tools.相反,我发现它加载了.cabal文件中声明的所有模块.
例如,以下是我的.cabal文件中的摘录,显示了声明了哪些模块:
library
-- Modules exported by the library.
exposed-modules: PrimeTools.MathStuff, PrimeTools.Factors, PrimeTools.PQTrials, PrimeTools.Main, PrimeTools.Base, PrimeTools.Lucas
-- Modules included in this library but not exported.
other-modules: PrimeTools.Extras
Run Code Online (Sandbox Code Playgroud)
这是在项目文件夹中ghci>运行后收到提示时发生的情况stack ghci:
Ok, modules loaded: PrimeTools.MathStuff, PrimeTools.Factors, PrimeTools.PQTrials, PrimeTools.Main, PrimeTools.Base, PrimeTools.Lucas, PrimeTools.Extras.
ghci>
Run Code Online (Sandbox Code Playgroud)
这个问题加载模块,而不是import prime-tools是,我现在可以使用在所有的模块定义的所有功能,无论他们是否出口.
这种区别引起的问题的一个例子:包prime-tools中有两个模块,它们具有一个被称为函数的实现pfactor.其中一个是导出的,打算由程序包的最终用户使用,而另一个仅供内部使用而不导出.
在有人评论之前,有充分的理由有两个实现pfactor,但它与我的问题无关.
我的问题:如何使用本地版本stack自动启动ghci环境ghc …
是否有一个堆栈命令可以运行以获取我的系统上堆栈安装的所有LTS版本的列表?
我正在尝试使用nightly-2017-08-17快照设置一个新项目
stack new test --resolver nightly-2017-08-17
Run Code Online (Sandbox Code Playgroud)
但是,这会产生以下错误:
Downloading template "new-template" to create project "test" in test/ ...
Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- test/test.cabal
Selected resolver: nightly-2017-08-17
Unable to parse cabal file: FromString "This package requires at least Cabal version 2.0" Nothing
Run Code Online (Sandbox Code Playgroud)
Cabal的最新版本:
stack setup --upgrade-cabal
Currently installed Cabal is 2.0.0.2, newest is 2.0.0.2. I'm not upgrading Cabal.
stack will use a sandboxed GHC it installed
For more …Run Code Online (Sandbox Code Playgroud) 我在haskell-stack项目上使用GHC.我想将错误字段提升警告到编译错误.
我尝试执行以下操作,但它不起作用.
{-# OPTIONS_GHC -Werror=missing-fields #-} -- DOESN'T WORK
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何解除丢失的字段警告编译错误吗?
当intero-mode试图自动安装关于Interotube,它产生以下错误:
Intero is not installed in the Stack environment.
Installing intero-0.1.23 automatically ...
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for intero-0.1.23:
ghc-8.2.2 from stack configuration does not match >=7.8 && <8.2.2 (latest matching version
is 8.2.1)
needed since intero is a build target.
Some potential ways to resolve this:
* Recommended action: try adding the following to your extra-deps
in <project directory>\stack.yaml:
- ghc-8.2.1
* Set 'allow-newer: true' to ignore …Run Code Online (Sandbox Code Playgroud) 我最近将我的应用程序升级到GHC 8.4,并且我正在尝试将应用程序部署到生产环境中.不幸的是,当我尝试在持续集成服务器上编译应用程序时,每次都会耗尽内存.(这个应用程序多年来一直在同一个服务上编译而没有问题.)有没有办法配置GHC/Stack以使编译使用更少的资源?如果它使编译速度变慢也没关系.
对于上下文,这里是编译器崩溃的地方:
Progress 171/271: aeson-1.2.4.0 aeson-1.2.4.0: copy/register
Progress 171/271: aeson-1.2.4.0 Progress 172/271
-- While building custom Setup.hs for package Cabal-2.2.0.1 using:
/root/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-2.2.0.1 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
Process exited with code: ExitFailure (-9) (THIS MAY INDICATE OUT OF MEMORY)
Run Code Online (Sandbox Code Playgroud)
ETA:这个问题已被标记为Cabal安装标准内存的重复,但不幸的是,该解决方案对我没有帮助.如果我stack build改为stack build --ghc-options '+RTS -M1500M -RTS',那似乎只会使崩溃稍早发生:
Cabal-2.2.0.1: copy/register
Progress 171/271: Cabal-2.2.0.1 Progress 172/271
-- While building custom Setup.hs for package tzdata-0.1.20180501.0 using:
/root/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-2.2.0.1 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
Process …Run Code Online (Sandbox Code Playgroud)