我有一个包含数组的非常大的JSON文件.是否可以使用jq
将此数组拆分为几个固定大小的较小数组?假设我的输入是这样的:[1,2,3,4,5,6,7,8,9,10]
我想把它分成3个元素的长块.所需的输出jq
将是:
[1,2,3]
[4,5,6]
[7,8,9]
[10]
Run Code Online (Sandbox Code Playgroud)
实际上,我的输入数组有近300万个元素,都是UUID.
我正在教自己FRP和Reactive-banana,同时写下我希望对那些跟随我的人更有用的教程.您可以在此处查看我在本教程中的进度.
我坚持尝试使用事件来实现简单的嘟嘟噪声示例.我知道我需要做这样的事情:
reactimate $ fmap (uncurry playNote) myEvent
Run Code Online (Sandbox Code Playgroud)
在我NetworkDescription
,但我无法弄清楚如何让网络反复做同样的事情,或做一次.理想情况下,我正在寻找这样的事情:
once :: a -> Event t a
repeatWithDelay :: Event t a -> Time -> Event t a
concatWithDelay :: Event t a -> Event t a -> Time -> Event t a
Run Code Online (Sandbox Code Playgroud)
Time
上面的类型只是我们最终使用的任何时间测量的替身.我是否需要将系统时间作为行为来连接以驱动"延迟"功能?这似乎比必要的更复杂.
提前致谢,
回声诺兰
编辑:好的,repeatWithDelay和concatWithDelay的类型没有意义.这就是我的意思.
repeatWithDelay :: a -> Time -> Event t a
concatWithDelay :: a -> a -> Time -> Event t a
Run Code Online (Sandbox Code Playgroud) 我有这样的数据类型:
data MyType = Foo Bool
| Bar
| Baz Bool (Maybe String) Bool
| Quux Int String
Run Code Online (Sandbox Code Playgroud)
我可以使用泛型来编写一个getBools :: MyType -> [Bool]
返回输入中所有布尔字段列表的函数吗?
我想出了这种类型的签名:
getAllOfType ::
(Generic inner, Generic outer, HasDatatypeInfo inner, All2 HasDatatypeInfo (Code outer)) =>
Proxy inner -> outer -> [inner]
Run Code Online (Sandbox Code Playgroud)
使用generics-sop
,但我不认为这是对的.比较DatatypeInfo
s不会说服类型检查器这两种类型是等价的.
我正在尝试使用 Rust 中的 Web3 JavaScript 库,但我陷入了困境。该库的标准用法始于:
// In Node.js use: const Web3 = require('web3');
let web3 = new Web3(Web3.givenProvider || "ws://localhost:8545");
Run Code Online (Sandbox Code Playgroud)
您应该导入的模块是一个构造函数,它还有一些其他属性。我的 Rust 代码应该绑定这个 API,如下所示:
#[wasm_bindgen(module = "web3")]
extern "C" {
type Web3;
#[wasm_bindgen(constructor)]
fn new(_: &Provider) -> Web3;
type Provider;
static givenProvider: Provider;
}
Run Code Online (Sandbox Code Playgroud)
最终输出import { Web3, givenProvider } from 'web3';
并尝试运行new Web3(...)
失败。它应该执行诸如import * as Web3 from 'web3';
运行new Web3(...)
和引用之类的操作Web3.givenProvider
。
我怎样才能让 wasm-bindgen 输出这样的代码?
我正在使用Netwire编写一个由来自网络的事件驱动的程序.我想这里有三个问题:
是什么让人Control.Wire.Unsafe.Event
不安全?就像标题所说,我需要保持哪些不变量才能安全使用它?
我觉得我需要这样的东西:mapMaybeE :: Monad m => (a -> Maybe b) -> Wire s e m (Event a) (Event b)
.上下文是我有来自网络的消息,我想只响应其中一些消息.这就是我写的:
mapMaybeE :: Monad m => (a -> Maybe b) -> Wire s e m (Event a) (Event b)
mapMaybeE f = arr go . arr (fmap f)
where go WU.NoEvent = WU.NoEvent
go (WU.Event Nothing) = WU.NoEvent
go (WU.Event (Just a)) = WU.Event a
Run Code Online (Sandbox Code Playgroud)
这是"合法的"吗?或者如果没有事件,我是否应该禁止?
Netwire对这类问题有意义吗?我见过的所有例子都是不断循环的游戏.在这里,我只想在有事情要做的时候踩电线.大多数情况下,这将是网络事件,但我可能也想在计时器上做事情.例如,一个事件进入,然后五秒钟后程序执行某些操作.它不应该连续循环,直到会话中的时间比事件进入的时间大5秒.