小编PyR*_*lez的帖子

更高效的教堂编码列表尾部

这是一个有文化的haskell帖子.只需将其保存为"ChurchList.lhs"即可运行它.

> {-# LANGUAGE Rank2Types #-}
Run Code Online (Sandbox Code Playgroud)

教会编码列表是一种通过函数表示列表的方式.它类似折叠和延续传递风格.

> newtype ChurchList a = CList {runCList :: forall r. (a -> r -> r) -> r -> r}
Run Code Online (Sandbox Code Playgroud)

为了说明这对应于列表,这里是O(n)同构

> fromList :: [a] -> ChurchList a
> fromList xs = CList $ \cons empty -> foldr cons empty xs

> toList :: ChurchList a -> [a]
> toList cl = runCList cl (:) []

> instance Show a => Show (ChurchList a) where
>   show cl = "fromList " ++ show (toList …
Run Code Online (Sandbox Code Playgroud)

haskell list time-complexity church-encoding scott-encoding

12
推荐指数
2
解决办法
562
查看次数

如何给lambda中的运算符添加空间?

例如,这不是类型检查

\cons nil -> 5 `cons` 3 `cons` nil
Run Code Online (Sandbox Code Playgroud)

这也不是

\(#) -> 5 # 3 # nil
Run Code Online (Sandbox Code Playgroud)

虽然这两者都有

\cons nil -> 5 `cons` nil
\(#) nil -> 5 # nil
Run Code Online (Sandbox Code Playgroud)

有没有办法在lambdas中为运算符分配infixites.我试过了

infixr 5 #
foo = \(#) nil -> 5 # 3 # nil
Run Code Online (Sandbox Code Playgroud)

这给出了没有定义#和的错误

foo = \(infixr 5 #) nil -> 5 # 3 # nil
Run Code Online (Sandbox Code Playgroud)

这只是一个语法错误.

我能做什么?

syntax lambda haskell infix-notation infix-operator

11
推荐指数
1
解决办法
250
查看次数

Travis CI与C++ 14和Linux

类似:Travis CI与Clang 3.4和C++ 11

如何让Travis CI与C++ 14一起工作?

这是我们当前的.travis.yml文件:

language: cpp
compiler:
 - gcc
 - clang
os:
 - linux
 - osx
script:
    make main
Run Code Online (Sandbox Code Playgroud)

这是我们的 makefile

# Factor Pro

# Macros
CXXFLAGS = -Os -std=c++14

# Rules
all::main

main: main.cpp
    g++ -o main $(CXXFLAGS) main.cpp

clean:
    rm -rf *.o main
Run Code Online (Sandbox Code Playgroud)

它可以工作osx,但不是linux.

c++ continuous-integration makefile travis-ci c++14

9
推荐指数
1
解决办法
2910
查看次数

在构造微积分中的"反射"事物?

在语言,如Agda,IdrisHaskell用类型扩展,有一种=像以下类型排序

data a :~: b where
  Refl :: a :~: a
Run Code Online (Sandbox Code Playgroud)

a :~: b意味着ab是一样的.

可以在构造计算Morte(这是基于构造计算的编程语言)中定义这样的类型吗?

haskell functional-programming equality dependent-type morte

9
推荐指数
1
解决办法
508
查看次数

什么是错误代码128?

什么是git-remote-http错误代码128.当我尝试使用需要身份验证的repo时它发生了(它从未要求输入密码.)是否有一些中心位置可以找出错误代码的含义?

git

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

如何继承数学运算?

对于一组数量相似的对象(称为有序字段),您只需要以下内容:

  • 加成
  • 乘法
  • 否定
  • 倒数
  • LessThanEqual

其余的(如减法和平等)如下.Obvioulsy,我还需要添加一些东西像__init____str__,但是我可以继承什么类型的对象从将提供其他运营商?我希望从上面推断出的其他一些运营商包括:

  • 减法
  • 绝对值
  • 所有其他比较运算符
  • 等等...

python

8
推荐指数
1
解决办法
133
查看次数

`receive.denyCurrentBranch = updateInstead`如何与索引交互?

receive.denyCurrentBranch 配置选项控制,如果你推到一个回购的分支,是结账会发生什么.

默认情况下,它拒绝它(这就是为什么你通常只推送到没有结账分支的裸存储库).

它可以通过ignore或禁用warn.

另一种选择是updateInstead.

这样做的是,如果HEAD和工作目录相同,并且正在推送分支HEAD,则工作目录和分支/ HEAD同时更新.

如果工作目录不同HEAD,则拒绝推送.
这是有用的,对于力推Web服务器,例如.

我的问题是,这个选项是否与索引相互影响?

指数是否更新?如果HEAD和工作目录匹配,但不是Index吗?

git git-push git-config git-index

8
推荐指数
1
解决办法
2837
查看次数

我可以在Android上使用光泽吗?

Gloss是用于OpenGL游戏和模拟的Haskell库.Android似乎支持OpenGL.

有没有办法在Android设备上运行基于Gloss的库?

android haskell opengl-es gloss

8
推荐指数
0
解决办法
732
查看次数

如何让`ghci`使用我的`show`功能?

假设你想使用自己的show函数(例如let show = take 1000 . Prelude.show).你如何允许ghci使用它来打印而不是内置show

haskell ghc ghci read-eval-print-loop

8
推荐指数
1
解决办法
150
查看次数

`stdin`和`stdout`句柄

我正在测试一个程序.具体来说,我正在单独测试一个函数.它需要一个可以读写的句柄.问题是,stdin或者stdout单独做不到的工作.我不想仅仅因为这样的测试而重写我的代码,也不想为了测试而打开一个套接字.此外,该程序尚不可用(功能未定义)所以我不能只通过运行它来测试它.

什么是stdinstdouthaskell 获取输入和输出的句柄.

stdin haskell stdout handle

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