小编Ric*_*ton的帖子

如何从MongoDB shell连接到复制集?

如果我正在编写一个连接到mongodb的应用程序,那么我可以为replicaset提供一个种子列表,驱动程序会将我引导到主节点,在那里我可以运行写命令.

如何为命令行mongoshell 指定种子列表以便连接到复制集.

mongodb mongo-shell

68
推荐指数
7
解决办法
7万
查看次数

用f#报废你的锅炉

我已经在Haskell编程语言中使用了Scrap Your Boilerplate和Uniplate库,我会发现通过有区别的联合的泛型编程形式非常有用.f#编程语言中是否有等效的库?

f# boilerplate generic-programming discriminated-union

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

如何在F#模式匹配中隐式转换为常见的超类型?

问题摘要

在使用f#时,我必须明确地将值强制转换为其类型的父类型,以便使模式匹配表达式正确地进行类型检查.理想情况下,我会喜欢一种更简洁的方式.

假设我有一些类层次结构:

type Foo () =
    abstract member Value : unit -> string

type A (i:int) = 
    inherit Foo ()
        override this.Value () = i.ToString()

type B (s:string) = 
    inherit Foo ()
        override this.Value () = s
Run Code Online (Sandbox Code Playgroud)

理想情况下,在一般的编程语言中,我会编写以下内容:

let bar (i:int) : Foo =
    match i with
      | 1 -> B "one"
      | _ -> A i
Run Code Online (Sandbox Code Playgroud)

然而,这无法正确键入检查,给我错误,"这个表达式应该有类型Foo但这里有类型B".我不明白为什么编译器没有足够的信息来推断匹配表达式的公共超类型,然后检查公共超类型是否为'Foo'.

目前,我被迫为模式匹配中的每个案例提供明确的强制:

let bar2 (i:int) : Foo =
    match i with
      | 1 -> (B "one") :> Foo
      | _ -> …
Run Code Online (Sandbox Code Playgroud)

f# type-inference

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

捕获方面的Mutable vs Ref变量

我对f#中变量的肤浅理解表明,将变量声明为"可变"并使用"ref"变量基本上都做同样的事情.它们是解决相同基础问题的不同方式 - 功能语言中有限且结构化的可变性允许,而不必求助于IO Monad.我的理解已经"抽象"了技术上的不同.

  1. 如果是这种情况,为什么闭包不能捕获可变变量,但它们可以捕获ref实例?
  2. 更一般地说,允许这种差异的两种形式之间的技术差异是什么?
  3. 从语言设计的角度来看,引入两个可变性快捷方式而不仅仅是一个快捷方式的目的是什么?

我很抱歉,如果这是一个多人,但他们似乎都相关.

f# closures mutability

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

在其他地方使用播放模板

是否可以在其他环境中使用Play Framework中的模板引擎?理想情况下,我想要一个形式的api:

String result = render("template-file.html",var1,var2);
Run Code Online (Sandbox Code Playgroud)

在某些框架中,模板引擎完全可以在框架之外使用,甚至可以单独使用.

java playframework

6
推荐指数
3
解决办法
1178
查看次数