四处招呼
"shiv" 究竟是什么意思?
感谢名单
轨枕
我熟悉类别理论中的monad(实际上它们是一个非常简单的概念),但>>=Haskell中的函数完全让我困惑.好的,所以将bind应用于一个M a和一个函数的值与a -> M u首先将monad应用于此函数,然后在指定的值上进行评估并将结果相乘:a >>= f是相同的join $ (fmap f) $ a.但这是如何自然地描述计算?是否有一些有用的方法可以帮助我理解它?
在某个地方是否有一些不适合C++丛林新鲜事物的文章?
我可以轻松地使用读取环境变量System.Environment.getEnv.但是,System.Environment没有任何相应的setEnv功能(据我所知).
如何从Haskell程序设置环境变量?我更喜欢跨平台的解决方案.(所以只是执行export VAR=val或使用System.Posix.Env并不是我正在寻找的.)
计算a的深度需要什么最小(最一般)的信息Data.Tree?是一个Data.Foldable足够的实例?
我起初试图fold一个Tree和被困试图找到合适的Monoid相似Max.有些东西告诉我,因为Monoid(这会计算深度)需要是关联的,它可能不能用于表达需要了解结构的任何折叠(如1 + maxChildrenDepth),但我不确定.
我想知道什么样的思维过程会让我在这种情况下得到正确的抽象.
我有一个Producer创建依赖于随机性的值,使用我自己的Randommonad:
policies :: Producer (Policy s a) Random x
Run Code Online (Sandbox Code Playgroud)
Random是一个mwc-random可以从ST或运行的包装器IO:
newtype Random a =
Random (forall m. PrimMonad m => Gen (PrimState m) -> m a)
runIO :: Random a -> IO a
runIO (Random r) = MWC.withSystemRandom (r @ IO)
Run Code Online (Sandbox Code Playgroud)
该policies生产商的产量从一个简单的强化学习算法好政策.
通过索引到policies以下内容,我可以在5,000,000次迭代后有效地绘制策略:
Just convergedPolicy <- Random.runIO $ Pipes.index 5000000 policies
plotPolicy convergedPolicy "policy.svg"
Run Code Online (Sandbox Code Playgroud)
我现在想要在每500,000步骤上绘制中间策略,以了解它们如何收敛.我写了几个函数,它们接受policies生产者并提取一个列表([Policy s a]),例如10个策略 - 每500,000次迭代一次 - 然后绘制所有这些函数. …
有没有办法使用DoctorJS(显然它曾经被称为jsctags)为Emacs生成TAGS文件?
我一直在环顾四周,似乎总是使用vi标签样式,但我可能会遗漏一些非常明显的东西.
几个emacs扩展创建"垃圾"缓冲区,我必须从各种缓冲区列表中手动删除它们.
Emacs有一个"隐藏缓冲区"的概念,例如用于迷你缓冲区.
如何将任意缓冲区设为隐藏缓冲区?
我希望能够使用正常的M-x rgrep工作流程(输入路径,模式并在*grep*缓冲区中显示链接的结果),但使用git grep而不是使用正常的find命令:
find . -type f -exec grep -nH -e {} +
Run Code Online (Sandbox Code Playgroud)
我试着直接设置grep-find-command变量:
(setq grep-find-command "git grep")
Run Code Online (Sandbox Code Playgroud)
和使用 grep-apply-setting
(grep-apply-setting 'grep-find-command "git grep")
Run Code Online (Sandbox Code Playgroud)
但似乎都不起作用.当我运行M-x rgrep它时,只需使用与find以前相同的命令.
事实上,我敢肯定,现在rgrep甚至没有用到的grep-find-command变量,但我想不出它的命令被存储.
如何让scala宏替换方法调用?
我的目标是创造一个叫做的特质ToStringAdder.假设我有一个x具有此特征的对象,那么当我调用时,x.add(any)我希望宏实际调用x.add(any, string)字符串是AST的字符串表示形式.(tostring当''任何'是一个函数时,这样我就可以很好).
除了Expecty之外,我所看到的所有这些示例都是有效地使用静态方法调用:不使用调用宏的对象.Expecty有以下方法,它给我一个关于如何检测'隐含这个'的线索,但我找不到在reify调用中引用它的方法.
private[this] def recordAllValues(expr: Tree): Tree = expr match {
case New(_) => expr // only record after ctor call
case Literal(_) => expr // don't record
// don't record value of implicit "this" added by compiler; couldn't find a better way to detect implicit "this" than via point
case …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用管道和基于它构建的各种库来编写基本的网络服务器.预期的流程是:
从socket接收字节串 - >使用二进制解码 - >服务器逻辑在这里 - >发送响应到套接字
我认为这将是:
fromSocket s 4096 >-> decode >-> serverLogic >-> toSocket s
Run Code Online (Sandbox Code Playgroud)
管道二进制有一个decode和一个decodeMany,但我不确定我理解差异,我不知道如何使用decode.为什么decodeMany将上游管道作为参数而不是用它链接>->?你如何使用decode,StateT我的管道最终应该是什么样的?