小编Adr*_*May的帖子

为什么读取-a在zsh中失败

如果我输入:

echo "1 the
dquote> 2 quick
dquote> 3 brown" | while read -a D; do echo "${D[1]}--${D[0]}"; done
Run Code Online (Sandbox Code Playgroud)

在bash中它说:

the--1
quick--2
brown--3
Run Code Online (Sandbox Code Playgroud)

但在zsh中它说:

zsh: bad option: -a
Run Code Online (Sandbox Code Playgroud)

为什么?我该怎么做呢?

arrays zsh

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

在Yesod长期投票

我可以在Yesod或任何其他具有可比数据库功能的Haskell Web框架中进行长时间轮询吗?

确切地说,我想延迟HTTP响应,直到发生一些有趣的事情.还应该有一个超时,在此之后客户端将被提供响应,说"没有发生",然后客户端将发出相同的请求.

为了让生活更加复杂,我想到的应用程序是通过HTTP/HTML5和MIDP客户端的一个非常紧凑的UDP协议提供所有的东西.来自任一协议的事件都可以在任一协议中释放响应

TIA,阿德里安.

haskell long-polling happstack yesod haskell-snap-framework

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

Prolog:foreach还是forall用于约束求解?

我正在尝试使用SWI prolog和CLP进行项目调度.我设法支持顺序依赖,但我正在努力避免双重预订人.

我有一个名为Schedule的列表,其中包含[taskname,starttime]等元素,其中starttime是约束求解器的自由变量.它们已经受到顺序依赖性的限制.

我正在尝试编写一个这样的循环来排除双重预订:

  forall /* or maybe foreach*/ (isa(P,person), (
    % Filter scheduled tasks on that person...
    include(\[T,S]^(assigned(T,P)), Schedule, HisSchedule),
    % Present what serialized expects..
    maplist(\[T,S]^S^true, HisSchedule, Sts),
    % duration is just user-defined data... 
    maplist(\[T,S]^D^(duration(T,D)), HisSchedule, Dus),
    % Hit it...
    serialized(Sts, Dus)
  )),
Run Code Online (Sandbox Code Playgroud)

随着foreach它总是失败和forall它总是成功而不会约束任何东西.

就这个循环而言,Schedule是全局的,目的是使用序列化来约束其starttime元素.OTOH,HisSchedule,Sts和Dus取决于特定的人.因此,我认为我需要foreach让Schedule快乐,但是要让HisSchedule等快乐.那是问题吗?如果是这样,我该如何解决?

lambda prolog resource-scheduling constraint-programming clpfd

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

jq:按名称在未知输入结构深处搜索属性并打印路径

标题说明了一切:jq 程序接受一个输入 JSON 文档,我对其结构只是模糊熟悉,并且我希望它打印其中具有特定名称的所有属性的路径。

path jq

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

抬起以固定monad变压器堆栈的*inside*

假设我有一个IO Int包裹在a中StateT MyState,那么我有一个值State MyState Int,我想在堆叠monad中使用它.如何在这种内在意义上解除它?我已经知道要使用lift或者liftIO如果我得到一些与内部兼容的东西,我只需要提升到外部monad,但现在我有相反的问题:值已经在外部monad但不是内部monad.

例如:

checkSame :: State MyState a -> IO a -> StateT MyState IO Bool
checkSame sim real = do
  rres <- liftIO real
  sres <- ??? sim 
  return $ rres == sres
Run Code Online (Sandbox Code Playgroud)

我是否必须"获取"状态,手动将其推入runState并将其全部重新装箱,或者是否有一些通用的方法来执行此操作?

顺便说一句,那个sim参数是一大堆与IO无关的有状态函数,所以StateT MyState IO a如果我能避免它,我有点不愿意让它们全部返回.

haskell monad-transformers lifting

3
推荐指数
1
解决办法
307
查看次数

模板允许左值与右值参考绑定

这个程序:

using namespace std;
#include <iostream>
#include <memory>

struct Dog 
{ 
    int legs; 
} adog;

Dog gimmeadog() { return adog; }

void walk(Dog && d) { cout << "Nonconst right dog walk\n"; }

//template<class T> void walk(T && d) { d.legs=3; cout << "Nonconst right something walk\n"; }

int main() {
    Dog mydog = gimmeadog();
    walk(mydog);    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正确无法在gcc上编译,因为:

error: cannot bind rvalue reference of type ‘Dog&&’ to lvalue of type ‘Dog’
  walk(mydog);
Run Code Online (Sandbox Code Playgroud)

但是如果你取消对模板的评论,它就会很快地绑定并打印出"Nonconst right something walk".

为什么?什么类型的T …

c++ rvalue-reference move-semantics c++11

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

为什么连懒惰的褶子都如此渴望?

这段代码:

import Data.Foldable
import Debug.Trace

factors :: [Bool]
factors = [True, True, False, True, True, True, True, True]

andy :: Bool -> Bool -> Bool
andy False _ = False
andy True False = False
andy True True = True

tandy :: Bool -> Bool -> Bool 
tandy a b = let c = a `andy` b in trace (show a ++ " & " ++ show b ++ " = " ++ show c) c

wonder :: Bool
wonder …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

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

将 &amp;self 强制转换为 mut (在非 mut 的情况下使用预定义特征)

我正在尝试实现分配器:

pub unsafe trait Allocator {
    fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>;
    ...
Run Code Online (Sandbox Code Playgroud)

请注意,&self 是不可变的。我不确定什么样的分配器能够在不更改分配器本身的情况下进行分配,但这是vec准备与之交谈的,所以我想我必须忍受它。我的问题是:

  • 他们应该制作 &self mut 还是我错过了什么?
  • 我该如何残酷地让这个自我变得沉默寡言?

我尝试在 impl 中添加 mut:

unsafe impl Allocator for Mappoc {                         
    fn allocate(&mut self, layout: Layout) -> Result<NonNull<[u8]>, AllocError> { 
    ...
Run Code Online (Sandbox Code Playgroud)

但它说:

|| error[E0053]: method `allocate` has an incompatible type for trait
src/lib.rs|110| 17
||     |
|| 110 |     fn allocate(&mut self, layout: Layout)
||     |                 ^^^^^^^^^
||     |                 |
||     |                 types differ in mutability
||     | …
Run Code Online (Sandbox Code Playgroud)

rust

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