标签: haskell-stack

在 HSpec 中设置测试套件

如何在 HSpec 中指定测试套件?我将为我*.hs的每个模块创建多个测试文件,我只想运行stack test并运行所有测试。我该如何设置?

我试图在我的 cabal 文件中列出这样的测试模块,但它不起作用:

test-suite foo-test
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test
  main-is:             Spec.hs
                     , Mod1Spec.hs
  build-depends:       base
                     , containers >= 0.5.6.2
                     , hqfl
                     , hspec >= 2.2.3
                     , hspec >= 2.2.3
                     , mtl >= 2.2.1
                     , pipes >= 4.1.8
                     , random >= 1.1
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010
Run Code Online (Sandbox Code Playgroud)

haskell hspec haskell-stack

1
推荐指数
1
解决办法
1058
查看次数

为什么“stack ghci”不加载我的测试文件?

我有一个看起来像这样的项目结构

在此输入图像描述

请注意,“api/test”目录包含“Spec.hs”,“api”是我的项目根目录,其中包含“.cabal”和“.yaml”文件。

当我$ stack ghci从项目根(api)运行时,api/test/Spec.hs不在范围内。而我的模块在api/src/范围内。

为什么定义的模块api/test不在范围内?

我的 .cabal 文件配置正确,以便$ stack test能够成功运行api/test/Spec.hs.

我什至无法Spec.hs从 ghci 加载模块。尝试通过从 ghci 内部运行来执行此操作 > :l test/Spec.hs会出现许多“无法加载接口”错误。

ghci haskell-stack

1
推荐指数
1
解决办法
302
查看次数

离线安装和运行 Haskell 包

我正在尝试在 Windows 服务器上运行小鸭(https://github.com/facebook/duckling)。

不幸的是,服务器只能访问内网,不能访问互联网。我如何设置 Haskell 以便能够在没有互联网访问的情况下构建和运行包?

haskell haskell-platform haskell-stack duckling

1
推荐指数
1
解决办法
624
查看次数

每当我尝试安装某些东西时都会抛出堆栈错误

每当我尝试使用 、 和其他几个软件包安装某些东西时stack$ stack install hip它们$ stack install Gifcurry都会抛出相同的错误:

Downloaded lts-12.9 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""
Run Code Online (Sandbox Code Playgroud)

这是我第一次尝试使用stack安装任何东西,所以我不知道该怎么做。在做这件事之前我确实跑步了$ stack upgrade

堆栈版本是1.5.1 x86_64,它位于目录中usr/bin/stack

haskell haskell-stack

1
推荐指数
1
解决办法
100
查看次数

堆栈安装可执行文件到自定义位置

我通常会stack install <package-name>和Stack一起安装它~/.local/bin.

我有办法指定目的地位置吗?

haskell haskell-stack

1
推荐指数
1
解决办法
142
查看次数

我的 Haskell 程序使用这么多内存是否有原因?

给定一个由空格分隔的单词输入文件,文件大小约为 64mb:

main :: IO ()
main = do
    content <- getData "data_1.txt" -- opens file, reads contents, closes handle,returns
    let tokens = words content
        mappedData = map (\token -> (token, 1)) tokens
        keySet = Set.fromList tokens
        intermediateData = map (\key -> (key, map snd (filter (\kv -> fst kv == key) mappedData))) (Set.toList keySet)
        final = map (\pair -> (fst pair, foldr (+) 0 (snd pair))) intermediateData
    print final
Run Code Online (Sandbox Code Playgroud)

content = ""
with open("data_1.txt", "r") as file:
    content …
Run Code Online (Sandbox Code Playgroud)

memory performance haskell functional-programming haskell-stack

1
推荐指数
1
解决办法
434
查看次数

Haskell使用带卫兵的可能吗?

我正在尝试在Haskell中执行以下操作:

 someFunction :: [] -> Int
 someFunction list 
 let a
 | length list == 1 = 10
 | otherwise = 0
 b
 | length list == 1 = 10 
 | otherwise = 0
 in findValues (a+b)
Run Code Online (Sandbox Code Playgroud)

因此,a和b的值将取决于守卫的条件是否得到满足.这种语法一直给我错误,我不知道为什么.我是否需要使用where子句或是否有正确的"let"语法来实现我想要的?

谢谢你的帮助

haskell functional-programming haskell-platform guard-statement haskell-stack

0
推荐指数
2
解决办法
498
查看次数

外部依赖,Haskell,堆栈:我应该修改一些东西还是'import'假设足够了?

我对Haskell和堆栈都很新.

import Data.Set
import Data.Stack
Run Code Online (Sandbox Code Playgroud)

上述语句触发编译错误:Could not find module 'Data.Set'. Perhaps you meant 'Data.Int'.我试图谷歌,发现没有类似的东西.

因此,我的问题是:我是否需要手动指定外部依赖项或仅仅是我的stack build命令,为什么无法从某个缓存或存储库中获取适当的模块?

如果我必须手动指定我的依赖项,我应该更喜欢.cabal.yaml?处理版本控制的正确方法是什么?

haskell dependency-management haskell-stack

0
推荐指数
1
解决办法
359
查看次数

无法在Haskell中导入Data.Stream

为什么不能在Haskell中导入Data.Stream?

Prelude> import Data.Stream

<no location info>: error:
    Could not find module ‘Data.Stream’
    Perhaps you meant Data.String (from base-4.12.0.0)
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming haskell-stack

0
推荐指数
1
解决办法
74
查看次数

Haskell中的`putStrLn`的基本错误。VScode扩展Haskelly

main = do line <- getLine
        let line' = reverse line
        putStrLn $ "You said " ++ line' ++ " backwards!"
        putStrLn $ "Yes, you really said " ++ line ++ " backwards!"
Run Code Online (Sandbox Code Playgroud)

错误:

$ stack runhaskell "c:\Users\FruitfulApproach\Desktop\Haskell\test.hs"

C:\Users\FruitfulApproach\Desktop\Haskell\test.hs:4:5: error:
    parse error on input `putStrLn'
  |
4 |     putStrLn $ "You said " ++ line' ++ " backwards!"
  |     ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

我也尝试过在缩进线上使用单个选项卡。

这是我的标签->空格设置:

制表符到空格设置屏幕截图

我也尝试过重新启动VSCode。

提前致谢!

haskell visual-studio-code haskell-stack

0
推荐指数
1
解决办法
32
查看次数