7
Q
在图案
A
回答
10
它足够聪明吗?让我们来看看!
[email protected]:~$ cat Foo.hs
module Foo where
foo [x] = [x]
这里是STG:
[email protected]:~$ ghc --make Foo.hs -ddump-stg -fforce-recomp
[1 of 1] Compiling Foo (Foo.hs, Foo.o)
==================== STG syntax: ====================
Foo.foo =
\r srt:(0,*bitmap*) [ds_sdP]
let-no-escape {
fail_sdO =
sat-only \r srt:(0,*bitmap*) [ds1_sdN]
Control.Exception.Base.patError "Foo.hs:2:0-12|function foo";
} in
case ds_sdP of wild_sdY {
[] -> fail_sdO GHC.Prim.realWorld#;
: x_sdV ds1_sdT ->
case ds1_sdT of wild1_sdZ {
[] -> : [x_sdV GHC.Types.[]];
: ipv_se0 ipv1_se1 -> fail_sdO GHC.Prim.realWorld#;
};
};
SRT(Foo.foo): [Control.Exception.Base.patError]
感兴趣的是这一行:
[] -> : [x_sdV GHC.Types.[]];
在这里我们看到,我们正在创造一个新的利弊细胞为x_sdV
和[]
。所以不行。但是,这并不算太坏,因为x_sdV
本身是共享的,所以它只是一个构造函数;此外,我们迫使名单xs
的脊柱,因此无论如何GHC将需要重写它。所以不要担心。
相关问题
- 1. 如何在FabricJs中添加图案和图案图案和颜色
- 2. 图案图像
- 3. 图案
- 4. 图案
- 5. 如何移动背景图案图案?
- 6. 搜索图案和打印图案
- 7. 立面图案vs委托图案;在Java中?
- 8. 在fabric.js中为图案图案添加过滤器
- 9. 在IoC中输入图案
- 10. 错误图案在Java
- 11. 在图像中查找图案
- 12. 在文本中包裹图像/图案
- 13. 设计图案
- 14. 灰色图案
- 15. 平铺图案
- 16. 复合图案
- 17. 图案文字
- 18. 省略图案?
- 19. Awk在第一个图案和第二个图案之间打印线条,其中第二个图案出现在第一个图案的上方和下方
- 20. 全图或1px图案?
- 21. 背景图片/图案
- 22. UITableViewCell背景(图案)
- 23. 伪随机图案
- 24. Autofac复合图案
- 25. PHP立面图案
- 26. C#三角图案
- 27. 图案的类型
- 28. 蟒检查图案
- 29. scala:图案加工
- 30. 有源图案3.0
+1我完全不知道我在这里看到什么,但它确实看起来令人印象深刻! – fredoverflow 2011-03-06 17:12:48
是的,STG读起来有点有趣。 :表示cons,[x1 x2 x3]表示cons的参数(有两个,因为cons有两个参数。) – 2011-03-06 17:49:57