小编use*_*023的帖子

内存映射大文件Haskell

我正在尝试使用Haskell mmap包,我对Haskell很新,所以我试着通过编写一个小程序来将少量数据写入内存映射文件.

此代码正确创建和文件大小,但似乎没有将数据从向量刷新到内存映射文件; 我使用hexdump验证了这一点 - 它只是全0.

出了什么问题?

import Control.Monad
import Data.Vector.Storable
import Foreign.Marshal.Array
import System.Directory
import System.IO
import System.IO.MMap

createFile :: FilePath -> Integer -> IO ()
createFile path size = do
    h <- openBinaryFile path WriteMode
    hSetFileSize h size

n = 10
size = 10 * 8
path = "test.dat" :: FilePath

main :: IO ()
main = do
    createFile "signal.ml" size
    let v = generate n (\i -> i) :: Vector Int
    putStrLn $ show v
    (ptr, s, …
Run Code Online (Sandbox Code Playgroud)

haskell

10
推荐指数
1
解决办法
537
查看次数

Haskell中{ - ## - }的目的

我正在通过Haskell代码看看我如何编写类似的流融合函数,我注意到一个有趣的语法结构,{ - #...# - },我没有遇到过; 所以我想知道它是什么以及如何找出它是如何工作的:

-- | /O(n)/ Drop elements that do not satisfy the predicate
filter :: Vector v a => (a -> Bool) -> v a -> v a
{-# INLINE filter #-}
filter f = unstream . inplace (MStream.filter f) . stream
Run Code Online (Sandbox Code Playgroud)

更具体地说,具体线路做什么?

{-# INLINE filter #-}
Run Code Online (Sandbox Code Playgroud)

haskell

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

OCaml 编译器检查向量长度

我想知道是否可以在 OCaml 中进行编译时检查以确保数组的长度正确。对于我的问题,我想在进行分段向量减法之前验证两个 GPU 1-dim 向量的长度是否相同。

let init_value = 1
let length = 10_000_000
let x = GpuVector.create length init_value and y = GpuVector.create 9 init_value in
let z = GpuVector.sub v1 v2
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我希望它抛出一个编译错误,因为 x 和 y 的长度不同。由于我是 OCaml 菜鸟,我想知道如何实现这一目标?我猜我将不得不使用函子或camlp4(我以前从未使用过)

ocaml

3
推荐指数
1
解决办法
344
查看次数

为什么这个C++代码没有从堆中删除对象?

我正在学习C++,我已经编写了一些代码来获得手动创建和删除对象的一些经验.我不认为我完全理解删除的语义,因为print语句仍然打印3,我相信它不应该.

#include <iostream>

class Test {
public:
    int x;
    int y;
};

using namespace std;

int main() {
    Test t1;
    t1.x = 1;
    t1.y = 2;
    cout << t1.x << endl;
    cout << t1.y <<endl;

    Test *t2 = new Test();
    t2->x = 3; t2->y = 4;
    cout << t2->x << endl;
    cout << t2->y <<endl;
    delete t2;

    cout << t2->x << endl;
}
Run Code Online (Sandbox Code Playgroud)

产量

joel-MacBook-Air:src joel$ ./test 
1
2
3
4
3
Run Code Online (Sandbox Code Playgroud)

请问你能解释为什么它在最后打印3?我的知识是它不应该打印3删除对象.

c++

0
推荐指数
1
解决办法
82
查看次数

标签 统计

haskell ×2

c++ ×1

ocaml ×1