小编Mar*_*ier的帖子

自己定义严格的应用程序($!)并不会产生相同的性能

我最近正在阅读Michael Snoyman撰写的这篇博客文章.在那里建议的练习中,我试图自己定义$!运算符:

import Prelude hiding ( ($!) )

($!) :: (a -> b) -> a -> b
($!) f x = x `seq` f x

mysum :: [Int] -> Int
mysum list0 =
  go list0 0
  where
    go [] total = total
    go (x:xs) total = go xs $! total + x

main = print $ mysum [1..1000000]
Run Code Online (Sandbox Code Playgroud)

虽然记忆的使用很糟糕,但我认为这种方法效果很好.我的第一个问题是这个.为什么这不好用?

然后,我在Prelude中检查了它的定义.它写道:

($!)                    :: (a -> b) -> a -> b
f $! x                  = let !vx = …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

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

缺少严格字段的​​ GHC 错误

我正在阅读这篇文章。它写道:

当用记录语法构造一个值时,如果你忘记了一个严格的字段,GHC 会给你一个错误。它只会对非严格字段发出警告。

谁能给我一个具体的例子?

haskell strictness

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

标签 统计

haskell ×2

ghc ×1

strictness ×1