如何按顺序对列表中的每个元素执行操作?
基于这两个资源:
我想我总是可以依靠:
foreach(member(X, [1,2]), write(X)).这是确定性的,我可以在我自己的谓词中包装成员/ 2谓词,并且仍然按顺序迭代吗?
如何在SWI-Prolog中打印一个术语列表.
我试过了:
portray_clause([term1, term2]).
但是这只是在一个长流中写出来,一个字符串甚至作为一个ascii字符代码列表出现 - 我想要打印"abc".
为什么每个非基本的haskell数据类型都被提升(即被占据_|_)?
我听说过一个原因是的存在和语义,seq但是我从未见过完整的解释,为什么这使它们全都被占据_|_-即为什么它们都不可能被占据_|_。
除此之外,还有哪些其他原因?
我已经配置了我的环境,以便我可以将适当制作的 .png 文件加载到定义如下的图像中:
boost::gil::rgb8_image_t input;
Run Code Online (Sandbox Code Playgroud)
但如何加载任何典型类型的 png 文件(例如由 GIMP 或 MS Paint 生成的文件)。我认为它需要 boost::gil::any_image 但我不知道我需要配置它的类型。
我试过了:
typedef boost::mpl::vector<
boost::mpl::rgba8_planar_image_t,
boost::mpl::rgba8_image_t,
boost::mpl::rgb8_planar_image_t,
boost::mpl::rgb8_image_t,
boost::mpl::gray8_image_t
> my_img_types;
boost::mpl::any_image<my_img_types> input;
boost::gil::png_read_image(ipath, input);
Run Code Online (Sandbox Code Playgroud)
但这不会加载由 MS Paint 或 GIMP 创建的文件。
在这个琐碎的程序中,可以打印从1到10000000的所有数字(一个Haskell版本和一个C版本),为什么Haskell这么慢呢?什么命令可以帮助您学习如何提高Haskell程序的性能?
以下是一份报告,其中包含重现我激动人心的事件所必需的所有详细信息,制作报告时将打印出源,包括Makefile的源:
$ make -B report
cat Foo.hs
import Data.Foldable
main = traverse_ print [1..10000000]
cat Fooc.c
#include <stdio.h>
int main()
{
for (int n = 0; n < 10000000; ++n)
{
printf("%d\n", n+1);
}
}
ghc -O3 Foo.hs -o Foo
time ./Foo | tail -n1
3.45user 0.03system 0:03.49elapsed 99%CPU (0avgtext+0avgdata 4092maxresident)k
0inputs+0outputs (0major+290minor)pagefaults 0swaps
10000000
cc -O3 Fooc.c -o Fooc
time ./Fooc | tail -n1
0.63user 0.02system 0:00.66elapsed 99%CPU (0avgtext+0avgdata 1468maxresident)k
0inputs+0outputs (0major+63minor)pagefaults 0swaps
10000000
cat Makefile …Run Code Online (Sandbox Code Playgroud)