我在第30页阅读了Twelve Go Best Practices和遭遇以及有趣的例子.
func sendMsg(msg, addr string) error {
conn, err := net.Dial("tcp", addr)
if err != nil {
return err
}
defer conn.Close()
_, err = fmt.Fprint(conn, msg)
return err
}
func broadcastMsg(msg string, addrs []string) error {
errc := make(chan error)
for _, addr := range addrs {
go func(addr string) {
errc <- sendMsg(msg, addr)
fmt.Println("done")
}(addr)
}
for _ = range addrs {
if err := <-errc; err != nil {
return err …Run Code Online (Sandbox Code Playgroud) 我有以下elixir代码片段:
defmodule Rectangle do
def area(a, b) do
a * b
end
def area(a) do
a * a
end
end
Run Code Online (Sandbox Code Playgroud)
然后我将文件加载到iex会话中,如下所示:
iex(1)> import_file "rectangle.exs"
{:module, Rectangle,
<<70, 79, 82, 49, 0, 0, 5, 84, 66, 69, 65, 77, 69, 120, 68, 99, 0, 0, 0, 204, 131, 104, 2, 100, 0, 14, 101, 108, 105, 120, 105, 114, 95, 100, 111, 99, 115, 95, 118, 49, 108, 0, 0, 0, 4, 104, 2, ...>>,
{:area, 1}}
Run Code Online (Sandbox Code Playgroud)
它像我预期的那样工作得很好
iex(2)> Rectangle.area(9)
81 …Run Code Online (Sandbox Code Playgroud) 我有以下匿名功能:
*Exercises> g = \(Sum n) -> Sum (n - 1)
Run Code Online (Sandbox Code Playgroud)
我用它像:
*Exercises> g (Sum 56)
Sum {getSum = 55}
*Exercises> g 56
Sum {getSum = 55}
Run Code Online (Sandbox Code Playgroud)
第二个例子,编译器如何转换56为Sum 56?
在前奏中,我看到这Sum是一个实例Num,但不清楚转换.
我正在玩一下zipWith并遇到以下情况:
Prelude Control.Applicative> :t zipWith id
zipWith id :: [b -> c] -> [b] -> [c]
Run Code Online (Sandbox Code Playgroud)
为什么编译器期望下一个参数是一个函数列表?
我试图分析,但无法断定,为什么下一个参数必须是函数列表.
当我id转到时,签名是如何申请的zipWith?
我有一个未标记容器的列表:
dockerizer@docker1:~/zookeeper$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 46371a3fcd90 12 hours ago 783MB
zookeeper latest e85300ce33a1 12 hours ago 783MB
<none> <none> 5dc40a99a229 12 hours ago 783MB
<none> <none> cf203e8e381d 12 hours ago 783MB
<none> <none> 662536a7dd7c 12 hours ago 740MB
<none> <none> fb43b0c06cb3 12 hours ago 783MB
servery latest 0226f44159c2 2 days ago 51.8MB
<none> <none> e25dad0578e1 2 days ago 51.8MB
consul latest d686c08d0dc8 3 days ago 51.8MB
ubuntu latest 747cb2d60bbe 2 weeks ago …Run Code Online (Sandbox Code Playgroud) I am trying to use scala test and write:
resolvers += "Artima Maven Repository" at "http://repo.artima.com/releases"
addSbtPlugin("com.artima.supersafe" % "sbtplugin" % "1.1.3")
Run Code Online (Sandbox Code Playgroud)
into plugins.sbt and build.sbt looks as following:
libraryDependencies ++= Seq(
"org.scalactic" %% "scalactic" % ScalaTest,
"org.scalatest" %% "scalatest" % ScalaTest % "test"
)
Run Code Online (Sandbox Code Playgroud)
SBT complains:
Error:Error while importing SBT project:<br/>...<br/><pre>[error] at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:118)
[error] at sbt.Classpaths$.$anonfun$updateTask$5(Defaults.scala:2353)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error] at sbt.std.Transform$$anon$4.work(System.scala:64)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:266)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167) …Run Code Online (Sandbox Code Playgroud) 我读了一篇关于部分统一的文章,作者提到了左偏和右偏的数据类型.
有人可以向我解释一下,什么是左偏和右偏的数据类型?
它与Function1有什么关系?
是Either左侧偏置或右侧偏置?
有关函数式编程的文章,其中很多都提到了Universe。我正在阅读Bartosz Milewski的著作《程序员的类别理论》,他也多次提到宇宙。问题是,在函数式编程和范畴论的语境中,宇宙意味着什么?
haskell functional-programming scala terminology category-theory
我想知道,Haskell中的自然转变是什么。自然转换用以下签名描述:
F[a] ~> G[a]
Run Code Online (Sandbox Code Playgroud)
例如,我可以转换:
Maybe a ~> List a
Run Code Online (Sandbox Code Playgroud)
对?
那怎么IO做是不可能的呢?
自然转型的目的是什么?