我对Haskell(语言)有一定的了解,但对工具链却没那么熟悉.(在cabal和堆栈存在之前,我在Haskell中玩过.)我被告知堆栈是我应该用来管理Haskell项目的工具.我正在尝试学习匆忙的库,我在第一个我尝试过的教程上遇到了困难,因为我无法安装hplayground.我创建了一个堆栈项目; 我的stack.yaml有
extra-deps:
- ghc-simple-0.3
- haste-compiler-0.5.3
- shellmate-0.2.3
- haste-perch-0.1.0.9
- hplayground-0.1.3.1
Run Code Online (Sandbox Code Playgroud)
我的.cabal文件在build-depends中列出了hplayground.但是当我运行堆栈构建时,我得到以下错误:
Configuring haste-perch-0.1.0.9...
Building haste-perch-0.1.0.9...
Preprocessing library haste-perch-0.1.0.9...
Haste/Perch.hs:17:15: Warning:
-XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS
Haste/App/Perch.hs:18:15: Warning:
-XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS
[1 of 2] Compiling Haste.App.Perch ( Haste/App/Perch.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.4.0/build/Haste/App/Perch.o )
Haste/App/Perch.hs:61:15: Not in scope: ‘newTextElem’
Haste/App/Perch.hs:71:9:
Not in scope: ‘setAttr’
Perhaps you meant ‘jsSetAttr’ (imported from Haste.App)
Haste/App/Perch.hs:76:15:
Not in scope: ‘newElem’
Perhaps you meant one of these:
‘nelem’ (line …Run Code Online (Sandbox Code Playgroud) 我想在Haskell中进行一些蒙特卡洛分析。我希望能够编写如下代码:
do n <- poisson lambda
xs <- replicateM n $ normal mu sigma
return $ maximum xs
Run Code Online (Sandbox Code Playgroud)
对应于随机模型
n ~ Poisson(lambda)
for (i in 1:n)
x[i] ~ Normal(mu, sigma)
y = max_{i=1}^n x[i]
Run Code Online (Sandbox Code Playgroud)
我可以很轻松地看到如何创建必要的随机采样单子。但是,我希望不必为所有标准概率分布实施采样器。是否有已实施这些的Haskell软件包?
我看过package random-fu,它在0.2.7版本中停滞了三年,但我无法理解。它取决于typeclass MonadRandom和RandomSource,并没有得到很好的解释。
我也看过package mwc-probability,但我也听不懂它-看来您已经了解了PrimMonadand PrimState类。
这两个软件包都令我感到惊讶,因为它们具有过于复杂的API,并且似乎完全放弃了Haskell的标准随机数生成框架(如中的所示)System.Random。
任何意见,将不胜感激。