小编Lin*_*ver的帖子

如何在Haskell中获取无限列表的每个第N个元素?

更具体地说,如何从现有的无限列表生成每个第N个元素的新列表?

例如,如果列表是[5,3,0,1,8,0,3,4,0,93,211,0 ...]然后让每个第三元件将导致在此列表[0,0,0, 0,0 ......]

haskell functional-programming list

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

如何访问用于调用 Ansible 的命令行参数?

我想打印出用于调用的命令行参数ansible-playbook。例如,如果我这样做

ansible-playbook foo.yml -e bar=quux

,我想访问上面的字符串,这样我就可以作为一项任务来完成

- shell: slack_notify.sh "{{ ansible_cli_invocation }}"

其中ansible_cli_invocation是一个值为 的字符串"ansible-playbook foo.yml -e bar=quux"。有没有办法做到这一点?

command-line-interface ansible

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

如何在STArray中使用`getBounds'?

我正在尝试使用STArray编写Fisher-Yates shuffle算法.与我在网上找到的所有其他示例不同,我试图避免使用本机列表.我只想在适当的位置随机播放一个阵列.

这就是我所拥有的:

randShuffleST arr gen = runST $ do
    _ <- getBounds arr
    return (arr, gen)
Run Code Online (Sandbox Code Playgroud)

arr是STArray,gen将是类型的生成器状态(RandomGen g).

我希望我可以依赖MArray中定义的(MArray (STArray s) e (ST s)) 实例声明来使用MArray,getBounds但GHCi无法推断出它的类型randShuffleST.它失败了:

Could not deduce (MArray a e (ST s))
  arising from a use of `getBounds'
from the context (Ix i)
  bound by the inferred type of
           randShuffleST :: Ix i => a i e -> t -> (a i e, t)
  at CGS/Random.hs:(64,1)-(66,25)
Possible fix:
  add …
Run Code Online (Sandbox Code Playgroud)

arrays random haskell shuffle

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

Emacs:在函数内使用add-hook(defun)

如果我做

(add-hook 'haskell-mode-hook
    (lambda ()
        (setq indent-tabs-mode t)
        (setq tab-width 4)
        (message "OK")))
Run Code Online (Sandbox Code Playgroud)

在我~/.emacs.d/init.el,然后(lambda ...)当我进入时,它会被执行haskell-mode.

但是,如果我使用这样的函数:

(defun my-add-hook (hook tmode twidth)
    (add-hook hook
        (lambda ()
            (setq indent-tabs-mode tmode)
            (setq tab-width twidth)
            (message "OK"))))
Run Code Online (Sandbox Code Playgroud)

然后~/.emacs.d/init.el像这样调用它:

(my-add-hook 'haskell-mode-hook t 4)
Run Code Online (Sandbox Code Playgroud)

然后没有任何反应(甚至没有显示"OK"消息).是add-hook一个无法在内部使用的特殊功能defun?我在单独的初始化文件中定义了每个项目设置,该文件检测缓冲区名称并将(lambda ()...)调用添加到相关的主要模式(在上面的示例中haskell-mode); 我想通过使用my-add-hook如上所述的薄包装来减少代码冗长,但我不知道为什么add-hook这么难.

EDIT1:添加了澄清代码.

EDIT2:我尝试使用时收到"文件模式规范错误:( void-variable tmode)"消息my-add-hook.

emacs hook elisp

4
推荐指数
1
解决办法
584
查看次数

Shell 脚本编写:在多行逻辑运算符之间散布注释

我有一个像这样的多行条件:

command1 \
    && command2 \
    && command3
Run Code Online (Sandbox Code Playgroud)

这很好,但我想在每个命令后添加注释,如下所示:

command1 \ # Comment for command 1.
    && command2 \ # Comment for command 2.
    && command3 # Comment for command 3.
Run Code Online (Sandbox Code Playgroud)

但脚本由于解析错误而中断(在 Bash 和 Zsh 中)。

有没有办法在多行条件之间添加注释?

注意:我意识到我可以为每个命令创建一个函数,然后在其函数定义中向每个命令添加注释;但如果可能的话我想避免这种情况。

unix bash shell comments zsh

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