如果我正在编写一个连接到mongodb的应用程序,那么我可以为replicaset提供一个种子列表,驱动程序会将我引导到主节点,在那里我可以运行写命令.
如何为命令行mongo
shell 指定种子列表以便连接到复制集.
我已经在Haskell编程语言中使用了Scrap Your Boilerplate和Uniplate库,我会发现通过有区别的联合的泛型编程形式非常有用.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#中变量的肤浅理解表明,将变量声明为"可变"并使用"ref"变量基本上都做同样的事情.它们是解决相同基础问题的不同方式 - 功能语言中有限且结构化的可变性允许,而不必求助于IO Monad.我的理解已经"抽象"了技术上的不同.
我很抱歉,如果这是一个多人,但他们似乎都相关.
是否可以在其他环境中使用Play Framework中的模板引擎?理想情况下,我想要一个形式的api:
String result = render("template-file.html",var1,var2);
Run Code Online (Sandbox Code Playgroud)
在某些框架中,模板引擎完全可以在框架之外使用,甚至可以单独使用.