小编yon*_*ong的帖子

让proc表示缩进

我有以下代码

{-# LANGUAGE Arrows #-}

test :: Int -> Int
test =
  proc x -> do
    let x = case x of
              3 -> 2
              2 -> 1
              _ -> 0
    returnA -< x

test2 =
  proc x -> do
    let x =
      case x of
        3 -> 2
        2 -> 1
        _ -> 0
    returnA -< x
Run Code Online (Sandbox Code Playgroud)

测试编译,但test2不解析.在=后可以将案例放在单独的行上吗?

haskell indentation

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

Haskell不垃圾收集列表的头部?

考虑以下程序:

module Main where

import Control.Monad.List

main = runListT $ do
  x <- ListT $ return $ [0..1000000000]
  lift $ print x
Run Code Online (Sandbox Code Playgroud)

理想情况下,我们希望在使用它时对列表进行垃圾收集,以便该程序仅使用常量内存.但是当我编译并运行它时

ghc Main.hs -O2 -o Main

我看到它继续使用越来越多的内存.如何让Haskell向GC说服列表中消耗的元素?

performance garbage-collection haskell

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

将"设置成本中心"附加到Monad(Haskell)的最佳方法

我正在尝试使用SCC(设置成本中心)注释来配置我的程序.找出do语句定义的monad运行需要多长时间的最佳方法是什么?(将SCC语句放入do块中是违法的.)换句话说,假设我有:

do
  x <- computeStuff
  y <- computeStuff
  return (x + y)
Run Code Online (Sandbox Code Playgroud)

如何找到两者的总执行时间computeStuffx + y(而不是Monad的施工时间)?

profiling haskell ghc

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

Cargo全球特色大门

我想为我的整个货运项目启用功能门.例如,我想#![feature(non_ascii_idents)]添加到每个源文件.有没有可以列出的地方Cargo.toml

rust rust-cargo

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

为什么这个Rust程序没有崩溃?

考虑一下这个Rust程序:

fn main() {
    let mut z : Vec<Vec<(bool,f64)>> = Vec::with_capacity(10);
    unsafe { z.set_len(10); }
    z[0] = vec!((true,1.));
    println!("{:?}", z[0]);
}
Run Code Online (Sandbox Code Playgroud)

https://play.rust-lang.org/?gist=ccf387ed66a0d8b832ed&version=stable

Rust应该z[0]在我们设置时尝试删除,并且由于z[0]未初始化它应该使程序崩溃.但它运行正常.为什么?

segmentation-fault rust

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

在Rust中查找HashMap <(String,usize),f64>中的键

我有一个HashMap<(String, usize), f64>.我也有一个&str和一个usize,我想在HashMap没有克隆的情况下查看.有没有一种方法来查找一(&str, usize)(String, usize)不知何故?

rust

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

使用scanl时空间泄漏在哪里?(Haskell的)

考虑一下这段代码:

incState state i = map (+ i) state

main =
  sequence_ $ do
    n <- map last $ scanl incState (replicate 1000000 0) (repeat 1)
    return $ print $ n
Run Code Online (Sandbox Code Playgroud)

当我运行它时,内存使用量不断增加,因为它打印出数字.这里的内存泄漏在哪里?它应该只保留一定量的内存,以前的值state应该在打印时丢弃.

即使sequence_或列表monad持有的值n,每次迭代只有一个整数.我看到6G的内存被使用后它只能达到100个.一百万个整数最多只能占用10M.

haskell memory-leaks

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

如何使用"Of"镜头?(Haskell的)

我想写:

minimum $ map _x elems
Run Code Online (Sandbox Code Playgroud)

使用镜头.我想使用minimumOf镜头,但我无法弄清楚如何使用它的类型.

我正在寻找类似的东西

elems ^.. minimumOf x
Run Code Online (Sandbox Code Playgroud)

但它没有打字检查:

Prelude Control.Lens Data.Map> let elems = [(1,2),(3,4)] :: [(Double, Double)]
Prelude Control.Lens Data.Map> elems ^.. minimumOf _1

<interactive>:62:11:
    Couldn't match type ‘Maybe a0’
                  with ‘[(Double, Double)]
                        -> Const (Data.Monoid.Endo [a]) [(Double, Double)]’
    Expected type: Getting (Data.Monoid.Endo [a]) [(Double, Double)] a
      Actual type: (a -> Const (Data.Monoid.Endo [a]) a) -> Maybe a0
    Relevant bindings include it :: [a] (bound at <interactive>:62:1)
    Possible cause: ‘minimumOf’ is applied …
Run Code Online (Sandbox Code Playgroud)

haskell lenses

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

输入返回* - >*的实例

我正在使用该linear库,我正在尝试创建一种推理三角矩阵的方法.

作为第一步,我正在尝试创建一种方法来计算下三角矩阵的大小.因此,例如,a M22具有带有3个元素的下三角矩阵,因此它将被映射到V3.

这是我的尝试:

import Linear

type family LowerTriPacked v :: * -> *
type instance LowerTriPacked V0 = V0
type instance LowerTriPacked V1 = V1
type instance LowerTriPacked V2 = V3
Run Code Online (Sandbox Code Playgroud)

但它没有打字检查,有:

Expecting one more argument to ‘V0’
The first argument of ‘LowerTriPacked’ should have kind ‘*’,
  but ‘V0’ has kind ‘* -> *’
In the type ‘V0’
In the type instance declaration for ‘LowerTriPacked’
Run Code Online (Sandbox Code Playgroud)

这样做类型检查:

type family LowerTriPacked2 v :: *
type instance …
Run Code Online (Sandbox Code Playgroud)

haskell type-kinds

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

返回自我生命周期的参考

我想写一些如下代码:

struct Foo {
    foo: usize
}

impl Foo {
    pub fn get_foo<'a>(&'a self) -> &'self usize {
        &self.foo
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,失败了invalid lifetime name: 'self is no longer a special lifetime.

如何返回与对象本身一样长的引用?

lifetime rust

4
推荐指数
2
解决办法
3333
查看次数