这个选项到底是做什么的?我一直在读TTY,但我仍然感到困惑.我玩的没有-t和只是-i,似乎期望用户输入的程序抛出错误没有-t.为什么启用伪TTY很重要?
我正在尝试描述我的应用程序.在使用-hcRTS选项分析内存使用情况时,我注意到大量内存标记为PINNED.运行时-hy将内存标记为ARR_WORDS.
该程序使用Data.Packed.Matrix来自hmatrix软件包的模块创建2400×2400的双精度矩阵,由于其中的元素应存储在连续内存中,因此我没有看到矩阵占用如此多空间的方法.

我的问题是:PINNED这个词到底意味着什么?还有一种方法可以获得有关内存使用的原因和位置的更多信息吗?
如果有人对它感兴趣,那么整个源代码都在GitHub上.但是,它与最小的例子相差甚远.
在通过Lens over Tea#1文章阅读时,我找到了united镜头.我的实施是
united :: Lens' a ()
united f v = const v <$> f ()
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是为什么我首先想要这样的功能呢?这个镜头有用吗?
显然,通过一些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有多种数据结构,如Map key value内部使用树或哈希映射.使用此数据结构时,可能在执行查找时,密钥将不存在.
在我的用例中,可能的键集是有限的(技术上它们都在Enum和Ord),我只对拥有所有键的映射感兴趣.
如何创建一个类似于地图的数据结构,保证地图中存在所有键,即它可以具有非部分功能lookup :: Map key value -> key -> value(可能具有key类型约束,Ord或者Hashable其他任何东西)?有没有这样的东西?
换句话说:我想要一个只有在插入所有可能的密钥时才能查询的数据结构.我可以使用正Map用fromMaybe,但是我不希望有指定默认值-我想在类型级别,以保证永远不会需要默认值.