小编dem*_*emi的帖子

返回指向本地结构的指针

我看到一些带有这样结构的代码示例:

type point struct {
  x, y int
}

func newPoint() *point {
  return &point{10, 20}
}
Run Code Online (Sandbox Code Playgroud)

我有C++背景,对我来说似乎是错误的.这种构造的语义是什么?是否在堆栈或堆上分配了新点?

go

70
推荐指数
2
解决办法
2万
查看次数

Golang函数类似于getchar

是否有类似getchar能够在控制台中处理标签按下的功能?我想在我的控制台应用程序中完成某种完成.

console go getchar

32
推荐指数
4
解决办法
2万
查看次数

Haskell中缀函数应用程序优先级

我们f x y = x * y.我们可以通过两种方式应用此函数:f 5 6或者,使用中缀表示法5 `f` 6.运算符规则是否适用于最后一个表达式?这个应用程序有什么优先权?它只是另一种形式的功能应用程序,它也具有最高优先级吗?

我想编译器会看到这种特殊形式(由于``和/或名称以字母(?)开头),并且实际上将其视为普通函数应用程序,而不是将其视为运算符.

haskell function operators infix-notation operator-precedence

24
推荐指数
2
解决办法
1万
查看次数

[]字节(字符串)有多贵?

让我们转换string[]byte:

func toBytes(s string) []byte {
  return []byte(s) // What happens here?
}
Run Code Online (Sandbox Code Playgroud)

这个演员阵营有多贵?正在进行复制吗?就我在Go规范中看到的那样:字符串的行为类似于字节切片但是不可变,这至少应该涉及复制以确保后续切片操作不会修改我们的字符串s.反向对话会发生什么?[]byte <-> string会话是否涉及编码/解码,如utf8 < - >符文?

performance type-conversion go

19
推荐指数
2
解决办法
4258
查看次数

Common Lisp有很好的遗产吗?(学习Common Lisp或更现代的变体如Scheme会更好吗?)

我想学习Lisp家族的一些语言.它可能是CL或Scheme,并尝试将其用于Web编程.纯娱乐.我有很多C++经验(专业发展).

但我希望我的选择是没有遗产的现代语言(在语言本身和库中),因为我想从一开始就学习好的设计模式.

我无法决定什么是更好的:CL或Scheme.CL拥有更大更优质的库和框架(Weblocks),但我听说它在语法和库方面有很多遗产.Scheme是另一种:简单,简洁的语法但是库很差.如果它没有遗产,我更喜欢CL.

我不喜欢学习像C++这样的另一个怪物.CL是否像Lisp系列中的C++一样?而Scheme就像是C#或Java - "修订版"的C++.

编辑:我想写功能样式,OOP可能是,但可选.

lisp scheme common-lisp

15
推荐指数
2
解决办法
1805
查看次数

Ocaml - 多态打印和类型丢失

在OCaml中有一系列函数,如print_int,print_endline和Printf.我做不了类似的事情:

let n = 10 in
print n;; (* And I haven't to change `print` in case type of `n` changed *)
Run Code Online (Sandbox Code Playgroud)

这就是Java,C#,Python等中的多态打印.相反,我们有类似C的类型,由程序员明确定义.所以我认为OCaml在编译过程中丢失了类型信息,并且在运行时没有它,对吧?这就是为什么我们还需要mli文件的原因?

编辑:我很累写函数像*print_listi*,*print_list_tuple2i*等等.我怎样才能做得更好?

printing ocaml types runtime

10
推荐指数
1
解决办法
2243
查看次数

Rvalue参考:为什么rvalues没有隐式移动?

关于C++右值引用的Artima文章(http://www.artima.com/cppsource/rvalue.html)有一些词:这就是为什么在传递给基类时有必要说move(x)而不是x .这是移动语义的一个关键安全功能,旨在防止意外地从某个命名变量移动两次.

当这样的双重动作可以执行时,我无法想到情况.你能举个例子吗?换句话说,如果所有成员T&&都是rvalue引用而不仅仅是引用会出什么问题?

c++ rvalue-reference c++11

10
推荐指数
1
解决办法
336
查看次数

Clojure中部分的简明语法

不久前学习Haskell,我感觉爱上了无点符号,特别方便的部分功能应用 - 只需提供你知道的args.在Clojure,我一直partial都有.我认为在阅读器中使用特殊语法会很好.

看一下示例代码:

; Notation with points:
(map (+ 10 (* % 2)) [1 2 3])

; With partial:
(map (comp (partial + 10) (partial * 2)) [1 2 3])

; Let #[] syntax means partial application in reader:
(map (comp #[+ 10] #[* 2]) [1 2 3])
Run Code Online (Sandbox Code Playgroud)

真是太好了!有这样的事吗?是否有可能定义自定义阅读器宏?

clojure partial-application pointfree

10
推荐指数
2
解决办法
795
查看次数

简化可能的表达式

我有以下代码,我觉得它很难看:

loginCheck = do
  ml <- getPostParam "login" -- ml and mp :: Maybe ByteString
  mp <- getPostParam "password"
  if isJust ml && isJust mp
    then authAs (fromJust ml) (fromJust mp)
    else render "Msg" [("text", "Form incomplete")]
Run Code Online (Sandbox Code Playgroud)

这段代码似乎非常迫切.我可以以某种方式简化它吗?

haskell

9
推荐指数
2
解决办法
271
查看次数

Go lang模板:用于施工

Golang http /模板有替换功能,if构造,但我没有找到for构造.我怎样才能遍历切片?像这样:

{{for x in xs}}
  Hello, {{x.Name}}!
{{end}}
Run Code Online (Sandbox Code Playgroud)

templates go

9
推荐指数
1
解决办法
2740
查看次数