小编Geo*_*rge的帖子

Haskell中的所有类型类都有类别理论模拟吗?

考虑一个类型类,其成员类型* -> *.例如:Functor类型类.众所周知,在Haskell中,这种类型类与其数学(即类别理论)类似物之间存在对应关系.归纳:

问题1: Haskell中每个成员都是类型的每个类型类都* -> *对应于类别之间的某些功能吗?

现在考虑一个类型为类型的类型类*.例如,可以想象一个类型类Group对应于组的类别(从技术上讲,Group它将是Hask其对象包含所有Haskell类型的子类别).归纳:

问题2: Haskell中每个成员类型的类型类是否*对应于某个类别(技术上:某些子类别Hask)?

由此,可以问下一个一般性问题:

问题3:类型的类型是否等于或高于* -> * -> *某些类别理论概念?

实际上,整个问题可归纳如下:

一般问题:每个Haskell类型类都对应于某种类别的理论概念吗?

编辑:至少,似乎你可以说,因为每个类型类都包含一些Haskell类型作为其成员,你可以将每个类型类视为一些子类Hask(关闭.和利用id).

haskell category-theory

8
推荐指数
2
解决办法
986
查看次数

显示`newtype T a = T(a - > Int)`是一个不是Functor的Type Constructor

据称这newtype T a = T (a -> Int)是一个不是仿函数的类型构造函数(但它是一个逆变函子).怎么会这样?或者什么是逆变函子(我认为这很明显为什么这不能成为一个普通的函子)?

haskell category-theory

8
推荐指数
3
解决办法
330
查看次数

在Orgmode中预览图片(不导出)

已经可以使用图像在orgmode中预览方程.例如,如果我输入

$y=2^x$
Run Code Online (Sandbox Code Playgroud)

然后我可以在组织文件本身中预览这个等式.我的问题是可以用图像做到这一点吗?到目前为止实施

$\includegraphics{picture.png}$
Run Code Online (Sandbox Code Playgroud)

不起作用(我只是得到一个空白框).

org-mode

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

如何使用Haskell的堆栈构建工具导出C/C++消耗的库?

假设一个正在使用stack的构建工具,使一个Haskell库(从Hackage导入包,等等)与其中一个C/C++项目中使用main位于C/C++.

假设您的项目被命名为Lib.hs(使用外部库从hackage),有没有使用堆栈来导出的方式Lib.o,Lib.hi以及Lib_stub.h要通过C/C++编译器像消耗gccg++

编辑:一个相关的问题可能是:"如何使用Stack作为构建工具与Haskell和C/C++项目一起使用,该项目main位于C/C++中?

编辑2:经过反思,解决此问题的一种方法是像往常一样使用Stack,但将C/C++主函数迁移到Haskell.这是最好的方法吗?是否存在巨大的性能成本或我应该注意的任何事情?

haskell ffi haskell-stack

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

为什么`((,)r)`一个非适用的Functor?

来自不适用的仿函数:

一个类型构造函数,它是一个Functor但不是Applicative.一个简单的例子是一对:

instance Functor ((,) r) where
    fmap f (x,y) = (x, f y)
Run Code Online (Sandbox Code Playgroud)

但是如何在Applicative不对其施加额外限制的情况下定义其实例是没有办法的r.特别是,没有办法如何定义pure :: a -> (r, a)任意的r.

问题1:为什么会这样?以下是如何pure使用f类型的函数a -> b:

(pure f) (pure x, pure y) = (pure x, pure f y)
Run Code Online (Sandbox Code Playgroud)

从那里,定义pure :: a -> (r, a)可能取决于什么r.例如,如果rInteger,则可以定义

pure x = (0 :: Integer, x)
Run Code Online (Sandbox Code Playgroud)

在您的实例声明中.那么问题是什么?

问题2:我们可以说一般来说,如果F是仿函数,那么<*> …

haskell category-theory applicative

7
推荐指数
2
解决办法
525
查看次数

具体类型无法成为应用程序的Functor示例?

来自不适用的仿函数:

一个类型构造函数,它是一个Functor但不是Applicative.一个简单的例子是一对:

instance Functor ((,) r) where
    fmap f (x,y) = (x, f y)
Run Code Online (Sandbox Code Playgroud)

但是如何在Applicative不对其施加额外限制的情况下定义其实例是没有办法的r.特别是,没有办法如何定义pure :: a -> (r, a)任意的r.

在这里,pure不能同时为所有类型定义; 但是,对于任何具体类型T,人们都可以((,) T)申请.

问题:是否有一个具体仿函数的例子(即,没有涉及类型变量)是一个仿函数而不是一个应用程序?

haskell category-theory

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

删除 MixPanel 中的历史事件

我最近创建了一个 MixPanel 分析帐户,并为开发/学习目的添加了一堆不需要的事件。

有没有办法删除与 MixPanel 项目关联的所有事件,或删除与用户配置文件关联的所有事件?

mixpanel

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

Om Next的查询 - > ast和ast->查询函数

根据Om Next的文档:

查询 - > AST

(om.next/query->ast '[(:foo {:bar 1})])
Run Code Online (Sandbox Code Playgroud)

给定查询表达式返回AST.

ast->查询

(om.next/ast->query ast)
Run Code Online (Sandbox Code Playgroud)

给定查询表达式AST,将其解析为查询表达式.

问题:为什么需要这些功能?也就是说,为什么需要直接操作查询抽象语法树(我假设是表示查询树的clojure映射,以及一些元数据)?

clojure clojurescript om

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

"git存储库"究竟指的是什么?

假设我的工作目录working_directory有一个.git隐藏的子目录(用其创建git init),没有别的.

我们的"git存储库"所指的是什么?它是隐藏.git文件夹,还是working_directory仅包含.git子文件夹的整个内容?

git

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

成员初始值设定项列表符号:方括号与括号

考虑以下pg的代码段。17 的C ++之旅

class Vector {
public:
  Vector(int s) :elem{new double[s]}, sz{s} { } //construct a Vector
  double& operator[](int i) { return elem[i]; } //element access: subscripting
  int size() { return sz; }
private:
  double* elem; // pointer to the elements
  int sz;  // the number of elements
};
Run Code Online (Sandbox Code Playgroud)

在这里,我关注第三行的成员初始化器列表,其中Stroustrup将冒号与两个初始化器语句elem{new double[s]}和分隔开sz{s}

问题:为什么他在这里使用方括号(即{..})来编写这两个初始化程序语句?我在网络上的其他地方看到过人们用括号括起初始化列表,这样(AFAIK)也可以合法地阅读elem(new double[s])sz(s)。那么这两种表示法在语义上有区别吗?还有其他方法可以初始化这些变量(在初始化列表的上下文中)吗?

c++ initialization initializer-list

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