草庐IT

GNU-Prolog

全部标签

memory - Prolog - 如何清除内存并从头开始?

我正在开发一个.pl文件中的算法,并在命令窗口上通过查询对其进行检查。我使用动态变量和撤回/断言谓词。当我修改pl文件并点击“重新加载修改的文件”时,我有额外的事实,我不想要。例如,一开始我有计数器(0)。然后我做一些事情,收回并断言这个计数器,它变成了counter(7)。然后,当我重新加载修改后的pl文件时,我都有计数器(0)。和计数器(7)。我怎样才能防止这种情况并且只有计数器(0)。一开始?提前致谢。 最佳答案 如果您只使用这些动态事实来实现计数器,您应该考虑这是否是最好的方法。使用assert/1和retract/1会产生

memory - Prolog - 如何清除内存并从头开始?

我正在开发一个.pl文件中的算法,并在命令窗口上通过查询对其进行检查。我使用动态变量和撤回/断言谓词。当我修改pl文件并点击“重新加载修改的文件”时,我有额外的事实,我不想要。例如,一开始我有计数器(0)。然后我做一些事情,收回并断言这个计数器,它变成了counter(7)。然后,当我重新加载修改后的pl文件时,我都有计数器(0)。和计数器(7)。我怎样才能防止这种情况并且只有计数器(0)。一开始?提前致谢。 最佳答案 如果您只使用这些动态事实来实现计数器,您应该考虑这是否是最好的方法。使用assert/1和retract/1会产生

c - memmem 是 GNU 扩展有什么特别的原因吗?

在C中,memmem函数用于定位内存区域中的特定字节序列。它可以同化为strstr,专门用于以空字符结尾的字符串。这个函数作为GNU扩展提供,而不是直接在标准库中,有什么特别的原因吗?手册指出:ThisfunctionwasbrokeninLinuxlibrariesuptoandincludinglibc5.0.9;theretheneedleandhaystackargumentswereinterchanged,andapointertotheendofthefirstoccurrenceofneedlewasreturned.Botholdandnewlibc'shavethe

c - memmem 是 GNU 扩展有什么特别的原因吗?

在C中,memmem函数用于定位内存区域中的特定字节序列。它可以同化为strstr,专门用于以空字符结尾的字符串。这个函数作为GNU扩展提供,而不是直接在标准库中,有什么特别的原因吗?手册指出:ThisfunctionwasbrokeninLinuxlibrariesuptoandincludinglibc5.0.9;theretheneedleandhaystackargumentswereinterchanged,andapointertotheendofthefirstoccurrenceofneedlewasreturned.Botholdandnewlibc'shavethe

c++ - Gnu Makefile - 处理依赖项

Unix平台上的C++程序员使用什么方法来创建和管理Makefile?我为我的项目使用了手工制作的Makefile,但它们不处理头文件更改和其他依赖项。我搜索了一下,找到了一个很好的解决方案here.但是我在sed命令中遇到了问题-sed-e's/#.*//'-e's/^[^:]*:*//'-e's/*\\$$//'\-e'/^$$/d'-e's/$$/:/'>$*.P;\问题在于第三个表达式“-e's/*\$$//'。它不起作用。它应该删除尾随反斜杠。我知道那里必须有双美元,因为这是Makefile的一部分。谁能告诉我这里出了什么问题?这是完整的Makefile-CC=g++CFLA

c++ - Gnu Makefile - 处理依赖项

Unix平台上的C++程序员使用什么方法来创建和管理Makefile?我为我的项目使用了手工制作的Makefile,但它们不处理头文件更改和其他依赖项。我搜索了一下,找到了一个很好的解决方案here.但是我在sed命令中遇到了问题-sed-e's/#.*//'-e's/^[^:]*:*//'-e's/*\\$$//'\-e'/^$$/d'-e's/$$/:/'>$*.P;\问题在于第三个表达式“-e's/*\$$//'。它不起作用。它应该删除尾随反斜杠。我知道那里必须有双美元,因为这是Makefile的一部分。谁能告诉我这里出了什么问题?这是完整的Makefile-CC=g++CFLA

如何在Prolog中生成正常的分布式随机数?

我是Prolog的初学者。我想知道如何在序言中生成正常的分布式随机数。我知道正在使用maybe从library(random)一个人可以设置概率。但是,当涉及到随机分布时呢?看答案通常,语言为您提供了超过0到1的均匀分布。从该统一分布到另一个分布有各种算法,但是这种情况尤为普遍,因此有几种方法可以做到这一点。如果您需要正态分布中的适度随机值,则Box-Muller变换是一种非常简单的算法,在几个均匀的随机值上相当于一点点数学:random_normal(N):-random(U1),random(U2),Z0issqrt(-2*log(U1))*cos(2*pi*U2),Z1issqrt(-2

c++ - _GNU_SOURCE 和 __USE_GNU

我想使用CPU_SET,这是一个glibclinux特定的宏,应该在sched.h中定义手册页明确指出_GNU_SOURCE必须定义以便定义宏。但是,查看标题,CPU_SET仅当__USE_GNU时才定义已定义(有#ifdef保护)。我好像记得几年前_GNU_SOURCE需要。问题:1)很明显,联机帮助页已关闭。如何通知维护人员手册页不正确?2)从_GNU_SOURCE转换的时间是什么时候?至__USE_GNU发生(根据版本或时间)3)是否存在新版本的glibc仍然使用_GNU_SOURCE的情况??或者我可以安全地假设定义__USE_GNU够了吗? 最佳答

c++ - _GNU_SOURCE 和 __USE_GNU

我想使用CPU_SET,这是一个glibclinux特定的宏,应该在sched.h中定义手册页明确指出_GNU_SOURCE必须定义以便定义宏。但是,查看标题,CPU_SET仅当__USE_GNU时才定义已定义(有#ifdef保护)。我好像记得几年前_GNU_SOURCE需要。问题:1)很明显,联机帮助页已关闭。如何通知维护人员手册页不正确?2)从_GNU_SOURCE转换的时间是什么时候?至__USE_GNU发生(根据版本或时间)3)是否存在新版本的glibc仍然使用_GNU_SOURCE的情况??或者我可以安全地假设定义__USE_GNU够了吗? 最佳答

交叉编译工具 aarch64-linux-gnu-gcc 安装和ATF编译

前提:需要linux的操作的操作系统或者在windows上用虚拟机运行linux操作系统的环境一.交叉编译工具aarch64-linux-gnu-gcc安装介绍:aarch64-linux-gnu-gcc是一个交叉编译工具链,可以在其他架构的系统中,编译安装64位arm架构的程序。常用在嵌入式代码的移植中。aarch64-linux-gnu-gcc是由Linaro公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARMv864位目标中的裸机程序、u-boot、Linuxkernel、filesystem和App应用程序。aarch64-linux-gnu-gcc交叉编译器必须安装在64位