小编Ana*_*Ana的帖子

打开某些文件类型时启动VIM Tagbar

当我打开某些文件类型时,我想要启动标签栏VIM插件,所以我将以下内容添加到我的.vimrc中:

if has("gui_running")
    autocmd BufEnter *.hs nested TagbarOpen
Run Code Online (Sandbox Code Playgroud)

但是,这并不像我预期的那样有效.它打开一个侧窗,但侧窗不显示任何内容,我的光标被困在其中.我无法通过单击或使用CTRL-W移动命令切换窗口.

但是,当我手动运行TagbarOpen时,它工作得很好.

其他人试过这个,或上面是错误的命令发出?

vim tagbar

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

了解Haskell的RankNTypes

在通过GHC扩展工作的同时,我遇到RankNTypes了Haskell学院,其中有以下示例:

main = print $ rankN (+1)

rankN :: (forall n. Num n => n -> n) -> (Int, Double)
rankN f = (f 1, f 1.0)
Run Code Online (Sandbox Code Playgroud)

该文章提供了另一种类型rankN:

rankN :: forall n. Num n => (n -> n) -> (Int, Double) 
Run Code Online (Sandbox Code Playgroud)

对差异的解释是"后一个签名需要从n到n的函数用于某些Num n;前一个签名需要从n到n的函数,每个Num n."

我可以理解,前一种类型需要签名是括号中的或更一般的.我不明白后一个签名只需要一个n -> n"某些Num n" 功能的解释.有人可以详细阐述和澄清吗?你如何"阅读"这个以前的签名,这听起来像它的含义?后者的签名是否相同Num n => (n -> n) -> (Int, Double)而不需要forall

haskell types

7
推荐指数
3
解决办法
549
查看次数

如何在Swift中用它创建类和实例对象的数组?

我之前尝试过问这个问题,但没有明确表达我的问题,所以我会在这里再试一次.我也注意到一个非常相似的声音问题,但它要求完全不同的东西.

我有以下代码:

class Base {
    func launch(code1: Int, code2: Int) { ... }
}

class A: Base {}
class B: Base {}
class C: Base {}

let classes = [A.self, B.self, A.self, B.self, C.self]
for cls in classes {
    let obj = ???
}
Run Code Online (Sandbox Code Playgroud)

我想cls在循环中实例化一个类型的对象并用它做一些事情.我可能在数组中有重复项,如图所示.我应该用什么来代替???能够实例化正确的对象?

generics swift

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

是否有一种非递归方式来编写这个"paginate"函数?

以下函数不在标准的Haskell库中,所以我写了它:

paginate _ [] = []
paginate n xs = let (h, t) = splitAt n xs in h : paginate n t
Run Code Online (Sandbox Code Playgroud)

然后我想重写它而没有明确的递归,但仍然很容易理解.

我试过这个fix版本,结果不太令人满意:

paginate = fix go
  where
    go _ _ [] = []
    go v n xs = let (h, t) = splitAt n xs in h : v n t 
Run Code Online (Sandbox Code Playgroud)

是否有更简单的解决方案使用Prelude功能?

haskell

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

求算法生成这个数字表

我正在寻找一种方法来生成以下系列数字,给出左侧的版本号.例如,给定"2",生成[6,18].这一系列的数字来自这里.

 V2  6  18
 V3  6  22
 V4  6  26
 V5  6  30
 V6  6  34
 V7  6  22  38
 V8  6  24  42
 V9  6  26  46
V10  6  28  50
V11  6  30  54
V12  6  32  58
V13  6  34  62
V14  6  26  46  66
V15  6  26  48  70
V16  6  26  50  74
V17  6  30  54  78
V18  6  30  56  82
V19  6  30  58  86
V20  6  34  62 …
Run Code Online (Sandbox Code Playgroud)

python algorithm design-patterns

6
推荐指数
0
解决办法
109
查看次数

如何忽略HLint的箭头提示?

我在Haskell代码上使用了HLint,但并非所有的警告/错误都非常有用.特别是,箭头提示,因为我从不使用箭头.

如何让HLint忽略所有箭头提示?

haskell lint

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

Haskell的"功能"在哪里?

如果您使用pointfree代码\b t f -> if b then t else f,您得到的答案是if'.

在哪里if'定义?

haskell

6
推荐指数
2
解决办法
215
查看次数

如何用Network.URI表示代码中的静态Haskell URI?

在Haskell包中Network.URIparseURI :: String -> Maybe URI功能.

我想在我的代码中有几个静态URI.写下面的内容是否合理?

Just myURI = parseURI "http://google.com/"
Run Code Online (Sandbox Code Playgroud)

与此相关的"问题"是,如果URI字符串实际上格式错误,则仅在运行时捕获模式失败的异常.

我想避免URI直接构造数据类型的繁琐(这会破坏URI并使其在某种程度上失去其概念意义).

有没有更好的方法在代码中使用静态URI并且更"安全"?

haskell uri

6
推荐指数
2
解决办法
198
查看次数

理解Haskell类型级别文字

查看Haskell Servant包,有一个将Web服务API定义为的初始示例:

             -- GET /date
type MyAPI = "date" :> Get '[JSON] Date
             -- GET /time/:tz
        :<|> "time" :> Capture "tz" Timezone :> Get '[JSON] Time
Run Code Online (Sandbox Code Playgroud)

我无法理解这意味着什么,并希望得到以下解释:

  1. :>并且:<|>是中缀构造函数.此类型声明是否表示它们是在此处定义的还是在此处使用?或者可能:>在这里定义但:<|>在其他地方定义?或者是其他东西?不知道如何阅读此类型.

  2. 什么是'[JSON]?这是某种类型级别的文字列表吗?报价是做什么的?

haskell types infix-operator

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

理解两个Haskell签名之间的区别,一个使用forall

本文中,有一个具有以下签名的函数:

vreplicate :: forall a n . SNatI n => a -> Vec a n 
Run Code Online (Sandbox Code Playgroud)

这个签名和没有签名的签名有什么区别forall:

vreplicate :: SNatI n => a -> Vec a n 
Run Code Online (Sandbox Code Playgroud)

?我的印象是,没有forall,它隐含地意味着forall在前面命名所有类型变量.

haskell

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