问题列表 - 第26343页

懒惰和I/O如何在Haskell中协同工作?

我正在努力深入了解Haskell中的懒惰.

我今天想象的是以下片段:

data Image = Image { name :: String, pixels :: String }

image :: String -> IO Image
image path = Image path <$> readFile path
Run Code Online (Sandbox Code Playgroud)

这里的吸引力是我可以简单地创建一个Image实例并传递它; 如果我需要图像数据,它将被懒惰地读取 - 如果不是,将避免读取文件的时间和内存成本:

 main = do
   image <- image "file"
   putStrLn $ length $ pixels image
Run Code Online (Sandbox Code Playgroud)

但它是如何实际工作的?懒惰如何与IO兼容?readFile是否会被调用,无论我是否访问,pixels image或者如果我从未引用它,运行时是否会将该thunk评估为未评估?

如果确实懒惰地读取了图像,那么I/O操作是否可能无序发生?例如,如果在调用后立即image删除文件怎么办?现在,putStrLn调用在尝试读取时将找不到任何内容.

haskell lazy-evaluation

10
推荐指数
2
解决办法
989
查看次数

更改提供给C预处理器宏的参数的大小写

我是C预处理器的新手.是否有可能改变提供给函数的参数的大小写#define?例如,我想写test(size),然后在结果替换中涉及"大小".

c c-preprocessor

12
推荐指数
1
解决办法
2181
查看次数

mprotect是否刷新ARM Linux上的指令缓存?

我正在ARM Linux上编写一个JIT,它执行一个包含自修改代码的指令集.指令集没有任何缓存刷新指令(在这方面类似于x86).

如果我向页面写出一些代码,然后mprotect在该页面上调用,那是否足以使指令缓存无效?或者我还需要cacheflush在这些页面上使用系统调用吗?

linux jit arm mprotect self-modifying

5
推荐指数
1
解决办法
1655
查看次数

Windows窗体中的TopMost属性真的很烦人

我有这个Windows窗体应用程序,它位于通知区域.单击图标将其显示在前面,再次单击它(或单击应用程序X图标)将其发回.这是通过单击图标显示窗口始终位于顶部的应用程序类型(虽然它是可选的).

右键单击该图标将显示一个上下文菜单,您可以选择是否启用"始终在线"选项.当应用程序首次启动时,应用程序设置将从XML文件中读取,并且我99%认为这是正常工作,TopMost属性正确读取(和写入).

经过一段时间(几分钟,几小时,几天,无论如何;我通常休眠,很少关机)TopMost 停止工作.我没有更改选项,我不认为有什么改变选项值,但我点击通知区域图标和应用程序没有提前.它显示但它在背景上(它显示在Alt + Tab上),它不应该"始终在顶部".我打开上下文菜单,禁用该选项(使其启用)并启用它,然后它开始工作.该应用程序现在"始终在顶部".但是,它可能会在一段时间后的任何时候失去这种能力.

我不明白为什么会发生这种情况以及如何发生这种情况 有谁知道为什么?如果没有,任何想法我怎么能尝试调试这样的行为?

编辑:
我添加了一段代码来显示一个MessageBox,当TopMost属性被更改,看看我是否能注意到任何奇怪的行为,但它并不好.它没有帮助,因为表格是有的,TopMost = true但它仍然在后台......

c# topmost always-on-top winforms

5
推荐指数
1
解决办法
3660
查看次数

如何设置rpmbuild目标文件夹

我注意到rpmbuild(-bb和--buildroot选项)根据你使用的操作系统在不同的位置创建.rpm:

  • GNU/Linux Ubuntu <= 9.04:/ usr/src/rpm/...
  • GNU/Linux Ubuntu> = 9.10:/ home/rpmbuild/...
  • GNU/Linux Fedora:/ usr/src/redhat/...

那么如何手动设置所有操作系统的目标文件夹?

redhat rpm rpmbuild

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

将整数转换为格式化的LPCWSTR.C++

我有一个direct3d项目,它使用D3DXCreateTextureFromFile()来加载一些图像.此函数采用LPCWSTR作为文件路径.我想加载一系列连续编号的纹理(即MyImage0001.jpg,MyImage0002.jpg等)但是c ++的疯狂字符串让我很困惑.

我如何能:

for(int i=0; i < 3;i++)
{
//How do I convert i into a string path i can use with D3DXCreateTextureFromFile?
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我应该提到我正在使用Visual Studio 2008的编译器

c++

4
推荐指数
1
解决办法
7686
查看次数

在Java中删除元素后缩短数组长度

注意:以下是我的作业/作业,如果你愿意,请随时不回答.

我想删除/删除一个元素从String数组(Set)基本,我不允许使用Collections..etc.

现在我有这个:

void remove(String newValue) {

            for ( int i = 0; i < setElements.length; i++) {
               if ( setElements[i] == newValue ) {
                    setElements[i] = "";

               }
            }

       }   
Run Code Online (Sandbox Code Playgroud)

我做了我想要的,因为它从数组中删除元素但它没有缩短长度.以下是输出,基本上它删除了索引#1的元素.

D:\javaprojects>java SetsDemo
Enter string element to be added
A
You entered A
Set size is: 5
Member elements on index: 0 A
Member elements on index: 1 b
Member elements on index: 2 hello
Member elements on index: 3 world
Member elements on index: 4 six
Set size …
Run Code Online (Sandbox Code Playgroud)

java arrays

5
推荐指数
2
解决办法
2万
查看次数

了解设备上下文

作为MFC的相对新手,我看到了很多设备上下文(DC).我隐约明白它与绘图有关,但具体内容在我能找到的任何地方都没有得到很好的解释.创建"兼容的设备上下文"是什么意思,为什么它很重要?SelectObject做了什么,我该如何首先兼容DC?

mfc device-context

7
推荐指数
1
解决办法
2886
查看次数

如何抓住Fn +?笔记本上有钥匙?

我可以用我的程序捕获Fn + F3(或Fn + F2 ....)键吗?

delphi

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

如何在Ruby中写入文件?

我需要从数据库中读取数据,然后将其保存在文本文件中.

我怎么能在Ruby中做到这一点?Ruby中有文件管理系统吗?

ruby file-io

553
推荐指数
7
解决办法
57万
查看次数