小编len*_*dor的帖子

std :: tie是否允许隐式转换?

在c ++ 11中,std :: tie允许隐式转换吗?

下面的代码编译并运行,但我不确定幕后发生了什么,或者这是否安全.

std::tuple<float,float> foo() { return std::make_tuple(0,0); }

double a, b;
std::tie(a,b) = foo(); // a and b are doubles but foo() returns floats
Run Code Online (Sandbox Code Playgroud)

c++ tuples c++11 stdtuple

8
推荐指数
1
解决办法
419
查看次数

使用-O2编译Haskell会大大增加内存使用量

这个简单的程序在编译时没有带ghc的标志时在常量内存空间中运行:

import Data.List
f x = x*x
g a = foldl' (+) (f a) [1..(1073741824-1)]
main = do putStrLn $ show $ foldl' (+) 0 $ map g [0,1]
Run Code Online (Sandbox Code Playgroud)

使用ghc -O2编译时,内存使用量超过系统资源(8GB).

将主要更改为:

main = do putStrLn $ show $ foldl' (+) 0 [g 0, g 1]
Run Code Online (Sandbox Code Playgroud)

缓解问题所以它似乎与地图有关.

任何人都可以解释这种行为,也许可以解决这个问题?

GHC版本是:格拉斯哥Haskell编译器,版本7.4.1,第2阶段由GHC版本7.4.1启动

memory optimization haskell map ghc

6
推荐指数
1
解决办法
440
查看次数

标签 统计

c++ ×1

c++11 ×1

ghc ×1

haskell ×1

map ×1

memory ×1

optimization ×1

stdtuple ×1

tuples ×1