小编Lub*_*lář的帖子

困惑于Docker -t选项以分配伪TTY

这个选项到底是做什么的?我一直在读TTY,但我仍然感到困惑.我玩的没有-t和只是-i,似乎期望用户输入的程序抛出错误没有-t.为什么启用伪TTY很重要?

tty pty docker

177
推荐指数
6
解决办法
4万
查看次数

PINNED在Haskell程序的-hc配置文件中意味着什么?

我正在尝试描述我的应用程序.在使用-hcRTS选项分析内存使用情况时,我注意到大量内存标记为PINNED.运行时-hy将内存标记为ARR_WORDS.

该程序使用Data.Packed.Matrix来自hmatrix软件包的模块创建2400×2400的双精度矩阵,由于其中的元素应存储在连续内存中,因此我没有看到矩阵占用如此多空间的方法.

在此输入图像描述

我的问题是:PINNED这个词到底意味着什么?还有一种方法可以获得有关内存使用的原因和位置的更多信息吗?

如果有人对它感兴趣,那么整个源代码都在GitHub上.但是,它与最小的例子相差甚远.

memory profiling haskell

23
推荐指数
1
解决办法
1494
查看次数

联合镜头的目的是什么?

在通过Lens over Tea#1文章阅读时,我找到了united镜头.我的实施是

united :: Lens' a ()
united f v = const v <$> f ()
Run Code Online (Sandbox Code Playgroud)

这与Lens库中的实现几乎相同.

让我感到困惑的是为什么我首先想要这样的功能呢?这个镜头有用吗?

haskell haskell-lens

6
推荐指数
1
解决办法
170
查看次数

如何在Haskell中使用长度注释列表

显然,通过一些GHC扩展,可以定义一种类型的列表,其长度在类型中编码,如下所示:

{-# LANGUAGE GADTs, EmptyDataDecls #-}

data Z
data S a

data List l a where
  Nil  :: List Z a
  Cons :: a -> List l a -> List (S l) a
Run Code Online (Sandbox Code Playgroud)

虽然我知道为什么这会有用,但我实际上使用它时遇到了麻烦.

如何创建这样的列表?(除了将其硬编码到程序中.)

假设有人想创建一个程序,从终端读取两个这样的列表并计算它们的点积.虽然很容易实现实际的乘法函数,但程序如何读取数据呢?

你能指点一些使用这些技术的现有代码吗?

haskell types static-typing

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

地图必须包含所有可能的键?

Haskell有多种数据结构,如Map key value内部使用树或哈希映射.使用此数据结构时,可能在执行查找时,密钥将不存在.

在我的用例中,可能的键集是有限的(技术上它们都在Enum和Ord),我只对拥有所有键的映射感兴趣.

如何创建一个类似于地图的数据结构,保证地图中存在所有键,即它可以具有非部分功能lookup :: Map key value -> key -> value(可能具有key类型约束,Ord或者Hashable其他任何东西)?有没有这样的东西?

换句话说:我想要一个只有在插入所有可能的密钥时才能查询的数据结构.我可以使用正Map用fromMaybe,但是我不希望有指定默认值-我想在类型级别,以保证永远不会需要默认值.

haskell types data-structures

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