小编fak*_*ake的帖子

在haskell中定义一个新的monad不会引发Applicative的实例

我试图定义一个新的monad,我得到一个奇怪的错误

newmonad.hs

newtype Wrapped a = Wrap {unwrap :: a}
instance Monad Wrapped where
  (>>=) (Wrap x) f =  f x
  return x = Wrap x

main = do
  putStrLn "yay"
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.1

$ ghc newmonad.hs 
[1 of 1] Compiling Main             ( newmonad.hs, newmonad.o )

newmonad.hs:2:10:
    No instance for (Applicative Wrapped)
      arising from the superclasses of an instance declaration
    In the instance declaration for ‘Monad Wrapped’

为什么我需要定义一个实例Applicative

monads haskell

53
推荐指数
1
解决办法
7192
查看次数

hl-line-mode emacs颜色变化

Emacs的hl-line-mode正是我需要的,但我想改变它的可怕的黄色,任何人都知道我该怎么做?

emacs colors line cursor

32
推荐指数
2
解决办法
9434
查看次数

Travis对每个python版本的特殊要求

我需要用于python 2.6的unittest2和importlib,这是travis测试的其他python版本所不需要的.

有没有办法告诉Travis-CI每个python版本都有不同的requirements.txt文件?

python travis-ci requirements.txt

30
推荐指数
2
解决办法
3821
查看次数

如何更改emacs上的光标颜色

我对Emacs的颜色进行了一些更改,现在唯一错误的是黑色背景上的黑色光标,我将不得不改变它.我该怎么办?

emacs colors cursor

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

如何在没有递增的情况下获取迭代器当前指向的项目?

有没有办法让python中的迭代器指向该项而不增加迭代器本身?例如,如何使用迭代器实现以下内容:

looking_for = iter(when_to_change_the_mode)
for l in listA:
    do_something(looking_for.current())
    if l == looking_for.current():
        next(looking_for)
Run Code Online (Sandbox Code Playgroud)

python iterator

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

Emacs重新定义整个C++缓冲区

我有一个c ++代码文件,但有一个非常难看的indetation.我如何告诉emacs重新应用缩进文件?

emacs indentation

16
推荐指数
3
解决办法
5833
查看次数

xargs拆分换行符而不是空格

这是我的问题

$ echo 'for i in $@; do echo arg: $i; done; echo DONE' > /tmp/test.sh
$ echo "ac\nbc\ncc\n" | xargs bash /tmp/test.sh 
arg: ac
arg: bc
arg: cc
DONE
Run Code Online (Sandbox Code Playgroud)

这是我所期待的,但是

$ echo "ac s\nbc s\ncc s\n" | xargs -d \n bash /tmp/test.sh
arg: ac
arg: s
arg: bc
arg: s
arg: cc
arg: s
DONE
Run Code Online (Sandbox Code Playgroud)

输出不应该是?

arg: ac s
arg: bc s
arg: cc s
DONE
Run Code Online (Sandbox Code Playgroud)

如何使用xargs获得第二个输出?

unix shell xargs

16
推荐指数
3
解决办法
2万
查看次数

预取和让步以“隐藏” Rust 中的缓存未命中

当 C++20 获得无堆栈协程时,一些 论文成功地使用它们通过预取和切换到另一个协程来“隐藏”缓存未命中。据我所知,Rust 的异步也像无堆栈协程,因为它是“零成本抽象”。是否有类似于我提到的在 Rust 中实现此类技术的工作?如果不是,是否有什么从根本上阻止人们使用 async/await 做类似的事情?

编辑:我想对我所理解的论文提出的内容进行非常高水平和简化的总结:

我们想要运行一堆独立的进程,如下所示

P1 = load1;proc1; load1';proc1'; load1'';proc1''; ... 
P2 = load2;proc2; load2';proc2'; load2'';proc2''; ... 
...
PN = loadN;procN; loadN';procN'; loadN'';procN''; ... 
Run Code Online (Sandbox Code Playgroud)

其中所有loadI项都可能导致缓存未命中。作者利用协程(动态)交错进程,以便执行的代码如下所示:

P = 

prefetch1;prefetch2;...;prefetchN;
load1;proc1;prefetch1'; # yield to the scheduler
load2;proc2;prefetch2'; # yield to the scheduler
...
loadN;procN;prefetchN'; # yield to the scheduler
load1';proc1';prefetch1''; # yield to the scheduler
load2';proc2';prefetch2''; # yield to the scheduler

...
loadN';procN';prefetchN''; # yield to the scheduler
...
Run Code Online (Sandbox Code Playgroud)

coroutine rust async-await

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

多态函数的参照透明性

考虑这种实施 on

on f g = curry $ (. bimap g g) $ uncurry f
Run Code Online (Sandbox Code Playgroud)

它是什么类型?GHC会说(b -> b -> c) -> (a -> b) -> a -> a -> c,这是一个很好的猜测。但是它错过了实例on (+) toInteger。让我们尝试修复程序(使用RankNTypesKindSignaturesAllowAmbiguousTypesConstraintKinds):

on :: forall (co :: * -> Constraint) a1 a2 b c . 
      (co a1, co a2) => 
      (b -> b -> c) 
   -> (forall a . co a => a -> b)
   -> a1 -> …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass rank-n-types

7
推荐指数
0
解决办法
89
查看次数

GHC 配置文件报告中的零条目是什么意思?

如果我理解正确,文档 entries是指成本中心对应的表达式被评估了多少次。但是在教授报告(甚至文档页面中的示例)中,许多成本中心都有零entries但非零%time。我错过了什么?

profiling haskell ghc

7
推荐指数
0
解决办法
84
查看次数