直到最近,我正在执行这个美容来构建+运行堆栈的项目:
stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name>
Run Code Online (Sandbox Code Playgroud)
IRC告诉我,这可以简化为
stack build && stack exec <project-name>
Run Code Online (Sandbox Code Playgroud)
这可以进一步简化
stack run
Run Code Online (Sandbox Code Playgroud)
或至少
stack run <project-name>
Run Code Online (Sandbox Code Playgroud)
?
如果我没记错的话,这是可能的cabal run.
编辑:
@ haoformayor的评论越来越近了:
alias b='stack build --fast --ghc-options="-Wall" && stack exec'
Run Code Online (Sandbox Code Playgroud)
虽然这还需要项目名称,对吗?
我也开始接近了
function stack-run () { stack build && stack exec `basename "$PWD"` }
Run Code Online (Sandbox Code Playgroud)
虽然这仅在项目名称与文件夹名称匹配时才有效.也许我们可以查询executable.cabal文件中第一个条目的cabal/stack ?或者也许我们可以用sed......
由于事情变化如此之快,我发布了这个问题,所以希望能够澄清社区同意的启动Haskell项目的方法.想象一下,我有两个独立的项目:
项目#1:Square,正方形数字的库.没有deps.
-- Square.hs
module Square where
square :: Num a => a -> a
square x = x * x
Run Code Online (Sandbox Code Playgroud)项目#2:斜边,库和可执行文件,找到直角三角形的最长边.取决于#1:
-- Hypotenuse.hs
module Hypotenuse where
import Square
hypotenuse :: Floating a => a -> a -> a
hypotenuse x y = sqrt $ square x + square y
Run Code Online (Sandbox Code Playgroud)
,
-- Main.hs
import System.Environment
import Hypotenuse
main = do
[x,y] <- fmap (map read) getArgs
print $ hypotenuse x y
Run Code Online (Sandbox Code Playgroud)与GHC 7.10.2计算机开始,栈和卡瓦尔安装,和一个单独的目录,~/OrganizeMe含~/OrganizeMe/Square.hs,~/OrganizeMe/Hypotenuse.hs …
有没有办法在Hoogle(或Stackage)上搜索类型类的实例?
例如,我想知道哪个包定义了Liftfor 的实例Text.
我能够在包装中找到它th-lift-instances,但手动搜索需要大约10分钟.好像应该有一些允许搜索实例的Hoogle功能.
我想为 Haskell 构建一个静态二进制可执行文件(在我的例子中,重要的是不要依赖任何系统库)。我使用堆栈作为我的首选构建工具。应该设置哪些标志来实现这一目标?对每一项的简要解释可加分。
更新:密切关注GHC 9.0.1中的这个错误作为可能的罪魁祸首。
在 GHC 9.0.1 下构建时,我在Haskell 包中看到了一些奇怪的 Unicode 行为。我知道解决这个问题可能涉及检查其他 Haskell 包中的更改,但我在这里的问题是我看到的意外输出是否会响起任何 Unicode 铃声(Haskell 或其他),以便我可以开始追踪原因意外的输出。
我希望看到的地方,分别
?(或\946)和?(或\947)我反而看到
??KQHTLXOCBJSPDZRAMEWNIUYGV 和??EYJVCNIXWPBQMDRTAKZGFUHOS这个输出也有一些令人沮丧的特性,使得很难理清发生了什么:
??SOVPZJAYQUIRHXLNFTGKDCMB)?实际上是一些特殊的字符。至关重要的是,在 GHC 9 夜间解析器之前,这一切都没有发生。
希腊字符后面的意外字符模式是否与任何有助于追踪我的错误来源的内容相对应?有没有关于 GHC 9 或最新的夜间 Stackage 解析器中的软件包如何处理可能导致这种情况的 Unicode?
更新:经过一些调查后,依赖关系似乎没有改变,它似乎可以在 GHC 8.10 上工作,并且具有与 nightly 相同的依赖关系(我认为;仍在处理它)但看起来确实发生了一些奇怪的事情使用 Unicode 字符作为键。
type Name = String
type Wiring = Mapping
type …Run Code Online (Sandbox Code Playgroud) 我决定尝试给堆叠一次.我安装了它并用它来安装最新版本的ghc.我已经使用堆栈来安装一些软件包,但ghc看不到软件包,当我用ghc-pkg列出软件包时,我看到我通过堆栈安装的软件包不在那里.为什么是这样?我是否误解了堆栈的目的?
我在防火墙后面有关于从互联网下载软件的严格规则,所以我想知道是否可以一次下载整个堆栈LTS快照并在本地服务器上提供服务,然后我们可以指向堆栈工具.
通过"快照",我将指代所有包的源代码,因为理想情况下我们需要从该本地服务器绘制以构建多个(堆栈支持的)平台(Linux,Windows).
例如,能够转到防火墙内的新机器,然后运行"stack new",然后编辑yaml文件以将其指向具有给定解析器编号的本地堆栈服务器,那么它会表现得很好通常从那时起,除了总是从本地服务器下载包.
编译器怎么样?我知道堆栈也下载了编译器,所以我想这些必须包含在下载的各种平台的快照包中吗?
谢谢
如何获得stack build转储GHC Core 的命令?我已经尝试过,但无济于事:
stack build :hello_world --ghc-options '-ddump-simpl'
Run Code Online (Sandbox Code Playgroud) 如何获得可用的堆栈构建计划列表?在某些系统上,我得到了,lts-3.7而另一些系统上lts-3.1。