小编dbe*_*ham的帖子

javascript websockets - 控制初始连接/ onOpen何时绑定

两个相关的问题可能更多地源于我对浏览器预解析javascript的方式缺乏了解:

var ws = new WebSocket("ws://ws.my.url.com");
ws.onOpen = function() { ... };
Run Code Online (Sandbox Code Playgroud)

似乎没有办法直接控制a的初始化WebSocket,除了将它包装在回调中,所以我假设一旦javascript代码被加载并创建到构造函数就会创建连接?

onOpen物业何时附加ws?是否存在竞争条件的可能性(如果由于某种原因,您在套接字的定义和onOpen?的定义之间有一些代码),那么onOpen在建立连接之前/之后是不可判定地绑定的(我知道您可以选择检查ws.readyState) .补充一点,是WebSocket握手阻塞吗?

我意识到这一切都是目前的草案,可能依赖于实现,我可能已经错过了一些令人眼花缭乱的显而易见的事情,但是在我的互联网搜索/浏览草案w3c规范时我看不出任何特别相关的信息,所以对我的理解有任何帮助websockets/javascript的内部工作非常感谢!

javascript html5 websocket

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

约束封闭式家庭

我可以说服编译器封闭类型系列中的类型同义词总是满足约束吗?该系列由一组有限的推广值索引.

有点像

data NoShow = NoShow
data LiftedType = V1 | V2 | V3

type family (Show (Synonym (a :: LiftedType)) => Synonym (a :: LiftedType)) where
  Synonym V1 = Int
  Synonym V2 = NoShow -- no Show instance => compilation error
  Synonym V3 = ()
Run Code Online (Sandbox Code Playgroud)

我可以对开放类型系列强制执行约束:

class (Show (Synonym a)) => SynonymClass (a :: LiftedType) where
  type Synonym a
  type Synonym a = ()

instance SynonymClass Int where
  type Synonym V1 = Int

-- the compiler complains here
instance …
Run Code Online (Sandbox Code Playgroud)

haskell type-families

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

模板类型扣除参考

我一直在玩类型扣除/打印使用模板的代码形式:

#include <iostream>
template <typename T>
class printType {};

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T>&)
{
    os << "SomeType"; return os;
}  

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T*>&)
{
    os << printType<T>() << "*"; return os;
}  

template <typename T>
std::ostream& operator<<(std::ostream& os, const printType<T&>&)
{
    os << printType<T>() << "&"; return os;
}  
// etc... and can call on a variable through

template <typename T>
printType<T> print(T) { return printType<T>(); }  

int main()
{
    int …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

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

使用镜头两次

我正在努力使用该lens库来解决特定问题.我想通过

  1. 更新的数据结构
  2. 镜头专注于更新结构的一部分

到另一个功能,g.我传递了镜头和数据结构,因为g需要来自数据结构的一些共享信息以及一条信息.(如果它有帮助,数据结构包含关于联合概率分布的信息,但g只能在边缘上工作,需要知道我正在看哪个边缘.两个边缘之间的唯一区别是它们与其定义的其余部分的平均值在数据结构中共享).

我的第一次尝试看起来像这样

f :: Functor f => Params -> ((Double -> f Double) -> Params -> f Params) -> a
f p l = g (l %~ upd $ p) l
  where upd = ...

g p x = go p p^.x
Run Code Online (Sandbox Code Playgroud)

但是在编译过程中失败了,因为它f被推断为Identity更新和Const Doublegetter.

完成我想做的最好的方法是什么?我可以想象能够做到以下之一:

  1. 制作镜头的副本,以便在每种情况下类型推断可以不同
  2. 我没有通过更新的结构和镜头,而是通过原始结构和一个返回修改值的镜头(如果我只想更新镜头所看到的结构部分).
  3. 为我的功能/数据结构做出更好的设计选择
  4. 完全不同的东西

谢谢你的帮助!

haskell lenses haskell-lens

7
推荐指数
2
解决办法
293
查看次数

FromJSON实例的单例,类型族和存在类型

首先简要概述我的一般问题可能更容易,然后显示我遇到的问题.

我想收到一些单独索引类型的JSON列表,其中索引类型也有一个关联的类型系列.在代码中:

data MyType = MyValue1 | MyValue2
type family MyFamily (mt :: MyType) where
    MyFamily MyValue1 = Int
    MyFamily MyValue2 = Double
data InputType (mt :: MyType) = InputNoFamily | InputWithFamily (MyFamily mt)
data OutputType (mt :: MyType) = OutputNoFamily | OutputWithFamily (MyFamily mt)
Run Code Online (Sandbox Code Playgroud)

通过存在量化,我应该能够隐藏变化的索引并且仍然能够获得值(具有一些类似延续的更高级别的类型函数 - 可能有更好的名称).我最终得到了我的程序

JSON -> [Some InputType] -> [Some OutputType] -> JSON
Run Code Online (Sandbox Code Playgroud)

其中Some是从exinst包,但低于还重新定义.在我不解析的情况下,我可以解析JSON MyFamily mt,但是我也无法找到从JSON中解析它的最佳方法.

我到目前为止的内容如下:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE …
Run Code Online (Sandbox Code Playgroud)

haskell existential-type typeclass data-kinds

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

可以为可执行文件和测试构建具有不同标志的依赖关系吗?

是否可以使用不同标记版本的依赖项构建我们的可执行文件和测试?

我们想运行我们的测试,vector +UnsafeChecks必须确保任何越界访问都未能通过测试,但有针对vector -UnsafeChecks其构建的可执行文件,这样它就不必支付性能损失。

目前正在使用堆栈,但很高兴在这里也可能有什么阴谋集团解决方案。

haskell cabal haskell-stack

5
推荐指数
0
解决办法
56
查看次数

空复合类型和具有所有空列的复合类型之间的区别

空值和所有列均为空的行类型之间是否有区别?Postgres查询似乎能够分辨出差异(显示空列而不是空白),我想知道是否有什么我应该注意的。例如

CREATE TYPE node AS (
   rank integer
 , id integer
);

CREATE TABLE hierarchy (
   node node
);

INSERT INTO hierarchy (node) VALUES (null);
INSERT INTO hierarchy (node) VALUES ((null, null));

SELECT *, node IS NULL AS check_null FROM hierarchy;
Run Code Online (Sandbox Code Playgroud)
 node | check_null
------+------------
      | t
 (,)  | t
Run Code Online (Sandbox Code Playgroud)

postgresql null distinct row-value-expression postgresql-9.6

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

在GADT中识别出datakind

我不确定这是我希望我的设计看起来如何,但是有没有办法让我的GADT看到mt参数必须是MarketType因为它是类型参数MarketIndex

我认为当前的类型检查是mt :: *如此MarketIndex mt失败,而不是我们需要MarketIndex mt在某个时候建立,所以必须限制mt :: MarketType.

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}

module Market.TypesDK where

data MarketType = WinDrawWin
                | AsianHandicap
                deriving (Show)

type family MarketIndex (mt :: MarketType) :: *

type instance MarketIndex WinDrawWin = ()
type instance MarketIndex AsianHandicap = Double

data Market :: MarketType -> * where
  Instance :: mt -> MarketIndex mt -> Market mt
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

[1 of …
Run Code Online (Sandbox Code Playgroud)

haskell

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