小编gsp*_*spr的帖子

可以纯粹执行`ST`之类的monad(没有'ST`库)吗?

这篇文章是有文化的Haskell.只需输入像"pad.lhs"这样的文件ghci就能运行它.

> {-# LANGUAGE GADTs, Rank2Types #-}
> import Control.Monad
> import Control.Monad.ST
> import Data.STRef
Run Code Online (Sandbox Code Playgroud)

好的,所以我能够想出如何ST用纯代码表示monad.首先,我们从我们的引用类型开始.它的具体价值并不重要.最重要的是PT s a不应该与任何其他类型同构forall s.(特别是,它既不应该同形()也不应该同形Void.)

> newtype PTRef s a = Ref {unref :: s a} -- This is defined liked this to make `toST'` work. It may be given a different definition.
Run Code Online (Sandbox Code Playgroud)

那种为s*->*,但现在不是真的很重要.对于我们所关心的一切,它可能是多面手的.

> data PT s a where
>     MkRef   :: a -> PT s …
Run Code Online (Sandbox Code Playgroud)

monads state haskell ghc purely-functional

32
推荐指数
3
解决办法
813
查看次数

什么是GHC堆配置文件中的ARR_WORDS?

由我们生成的程序的堆配置文件./program +RTS -hy -p由"ARR_WORDS"控制.它与我的程序中任何明显的东西都不对应; 它是某种GHC内部的吗?我应该如何看待它在配置文件中的主导外观?

我正在使用GHC 7.0.3.

haskell ghc

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

Lambda用于Haskell中的类型表达式?

Haskell或特定编译器是否具有类型级lambda(如果这甚至是一个术语)?

详细说,我说有一个参数化类型,Foo a b并希望Foo _ b成为一个实例,比如Functor.是否有任何机制可以让我做类似的事情

instance Functor (\a -> Foo a b) where
...
Run Code Online (Sandbox Code Playgroud)

lambda haskell

25
推荐指数
4
解决办法
5406
查看次数

`where`子句中的`inferior-haskell-type`?

请问哈斯克尔模式或一些替代包提供一个类似于美妙inferior-haskell-type 里面一个where条款?

例如,假设我有

foo = undefined where
    bar = complicated
    ...
Run Code Online (Sandbox Code Playgroud)

能够将标记放置bar并检查其类型将是非常棒的.

emacs haskell

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

使用GHCi调试Haskell程序中的无限循环

我第一次在Haskell程序中遇到了无限循环.我已经将它缩小到一个非常具体的代码部分,但我似乎无法精确指出我有一个非终止递归定义的位置.我模糊地熟悉:跟踪和:GHCi中的历史,但问题是我的代码的某些分支涉及相当多的递归修改Data.Map.Map,因为地图x是通过基于值adjust的地图中x'的某些东西获得的在另一张地图上取决于x'.具体细节在这里并不重要,但正如你可能知道的那样,如果这是以交织在一起的递归方式发生的,那么我的通话历史会在地图lookups,adjustments和insert离子所涉及的所有各种比较中完全陷入困境.

任何人都可以推荐一种更有效的方法来定位无限循环?例如,它可以帮助将呼叫历史限制为来自单个源文件的调用.

debugging haskell infinite-loop ghc ghci

20
推荐指数
4
解决办法
5719
查看次数

GPU上的整数计算

对于我的工作来说,进行整数计算特别有趣,这显然不是GPU的用途.我的问题是:现代GPU是否支持高效的整数运算?我意识到这应该很容易为自己弄清楚,但我发现相互矛盾的答案(例如),所以我认为最好问.

另外,GPU上有任意精度整数的库/技术吗?

optimization performance integer gpgpu

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

分析多态的成本?

我有一个"不必要"多态的代码库,因为几乎每个函数都以某种方式是多态的(为什么不是,什么时候可以?),但最终程序只使用少数具体类型的函数.我已经开始花费一些时间投入SPECIALIZEINLINABLEpragma试图降低所有这些多态性的性能成本,但是随着我的代码的大小,它非常受欢迎.对于每个函数,有没有办法分析在运行时花费多少时间"完成多态性所需的事情"?

(注意:我已经问过这个问题而不知道这样的事情是否在技术上是可行的,或者"多态性需要的东西"是否足够明确).

polymorphism profiling haskell ghc

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

为什么使Vector成为Functor,Monad,Applicative,Alternative,Foldable和Traversable实例的函数变慢?

向量版本0.8的更改日志列出了以下更改并带有警告:

盒装载体的Functor,Monad,Applicative,Alternative,Foldable和Traversable实例(警告:它们往往很慢并且只是为了完整性而提供).

有人可以解释为什么会这样吗?它只是类型类专业化的正常成本,还是更有趣的东西?

更新:看一些特定的实例,例如:

instance Foldable.Foldable Vector where
  {-# INLINE foldr #-}
  foldr = foldr
Run Code Online (Sandbox Code Playgroud)

并且类似地用于其他折叠.这是否意味着Vector一般情况下折叠很慢?如果没有,是什么让一个非专业的折叠足够慢以保证警告?

performance haskell

16
推荐指数
2
解决办法
524
查看次数

用Matplotlib绘制制图?

如果有人不知道:制图是一种地图类型,其中一些依赖于国家/地区的数字属性缩放相应的区域,以便该属性的密度(接近)恒定.一个例子是

示例制图

来自worldmapper.org.在这个例子中,国家根据人口规模进行调整,导致人口密度接近恒定.

不用说,这真的很酷.有没有人知道用于绘制此类地图的基于Matplotlib的库?worldmapper.org中使用的方法在(1)中描述,所以如果还没有人实现这个,我会感到惊讶......

我也有兴趣听说其他的图纸库,即使它们不是为Matplotlib制作的.

(1)Michael T. Gastner和MEJ Newman,基于扩散的密度均衡图制作方法,Proc.纳特.科学院.科学.美国,101,7499-7504(2004).可在arXiv上购买.

visualization matplotlib cartography cartogram

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

Haskell中的音频和信号处理

你知道Haskell中音频合成/信号处理的活跃尝试吗?既可以进行现场演出,还可以进行离线处理?我不是在寻找依赖外部工具的库(比如绑定到SuperCollider).

我找到了合成器,但它已经很久没有更新了.

dsp也很有趣.但是它维持了吗?

对于纯信号处理,也有长石.它得以维持和发展.也许它可以用作构建面向音频的信号处理库的未来基础.

有类似的套餐吗?

haskell signal-processing audio-processing

14
推荐指数
2
解决办法
3092
查看次数