小编Jas*_*Yeo的帖子

What exactly does runtime.Gosched do?

In a version prior to the release of go 1.5 of the Tour of Go website, there's a piece of code that looks like this.

package main

import (
    "fmt"
    "runtime"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        runtime.Gosched()
        fmt.Println(s)
    }
}

func main() {
    go say("world")
    say("hello")
}
Run Code Online (Sandbox Code Playgroud)

The output looks like this:

hello
world
hello
world
hello
world
hello
world
hello
Run Code Online (Sandbox Code Playgroud)

What is bothering me is that when runtime.Gosched() is …

concurrency go

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

与OCaskl中Haskell的类型类最接近的是什么?

有什么方法可以完成Haskell的类型类在OCaml中的作用?基本上,我想编写一个多态函数而不需要编写太多代码.进行多态的典型方法是提供一个额外的参数,告诉函数它当前正在处理什么类型.例如,假设我要对一个int列表进行排序,我必须将另一个比较器传递给该函数.

type comparison = Lesser | Equal | Greater

my_sort : (a' -> a' -> comparison) -> 'a list -> 'a list
Run Code Online (Sandbox Code Playgroud)

反正有没有告诉OCaml我的类型是可比较的,而不是为我想要排序的每种类型编写比较器函数?这意味着我的排序功能看起来像这样:

my_sort : 'a list -> 'a list
Run Code Online (Sandbox Code Playgroud)

polymorphism ocaml haskell typeclass

42
推荐指数
4
解决办法
8397
查看次数

在OCaml中,ghci的类型指令相当于什么?

在ghci中,您可以使用type指令找出任何表达式的类型.

例如,如果我想找出类型\ f g h -> g (h f),我可以使用ghci解释器中的指令,如下所示:

Prelude> :t \ f g h -> g (h f)
\ f g h -> g (h f) :: t2 -> (t1 -> t) -> (t2 -> t1) -> t
Run Code Online (Sandbox Code Playgroud)

OCaml是否有相同的功能?

ocaml haskell types

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

将OCaml AST打印为OCaml代码

我有这段包含camlp4报价的代码.

let f_name = "my_func"
<:str_item< value $lid:f_name$ a = a * 2 >>
Run Code Online (Sandbox Code Playgroud)

经过这个camlp4of,它产生了这个:

  Ast.StExp (_loc,
    (Ast.ExApp (_loc,
       (Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "=")))),
          (Ast.ExApp (_loc,
             (Ast.ExApp (_loc,
                (Ast.ExId (_loc, (Ast.IdLid (_loc, "value")))),
                (Ast.ExId (_loc, (Ast.IdLid (_loc, f_name)))))),
             (Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))))),
       (Ast.ExApp (_loc,
          (Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "*")))),
             (Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))),
          (Ast.ExInt (_loc, "2")))))))
Run Code Online (Sandbox Code Playgroud)

我的问题是,无论如何打印生成的ocaml代码?我camlp4of应该使用什么命令或选项来显示代码?我希望从上面的例子中看到的是:

value my_func a = a * 2
Run Code Online (Sandbox Code Playgroud)

那可能吗?原因是因为我想做一些调试,看看生成的ocaml代码是怎样的.

ocaml abstract-syntax-tree camlp4

5
推荐指数
1
解决办法
1211
查看次数

是否有其他方法可以解析OCaml中的选项类型?

OCaml的选项类型在您的函数可能不返回任何内容的情况下非常有用.但是当我在很多地方使用它时,我发现在一直处理Some案件和None案件时很麻烦match ... with.

例如,

let env2 = List.map (fun ((it,ie),v,t) ->
  match t with
  | Some t -> (v,t)
  | None   ->
    begin
      match it with
      | Some it -> (v,it)
      | None    -> failwith "Cannot infer local vars"
    end) ls_res in
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以简洁地解构选项类型?

ocaml ml code-readability

4
推荐指数
1
解决办法
757
查看次数

代码注释中的预处理错误

我用corebuild以下代码编译代码时遇到此错误:

~/project $ corebuild debug.byte
ocamlfind ocamldep -syntax camlp4o -package bin_prot.syntax -package sexplib.syntax,comparelib.syntax,fieldslib.syntax,variantslib.syntax -package core -modules globals.ml > globals.ml.depends
+ ocamlfind ocamldep -syntax camlp4o -package bin_prot.syntax -package sexplib.syntax,comparelib.syntax,fieldslib.syntax,variantslib.syntax -package core -modules globals.ml > globals.ml.depends
File "globals.ml", line 744, characters 57-17803 (end at line 1402, character 0):
Quotation not terminated
Preprocessing error on file globals.ml
Error while running external preprocessor
Command line: camlp4 '-I' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/ocaml/camlp4' '-I' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/type_conv' '-I' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/ocaml' '-I\
' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/ocaml' '-I' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/bin_prot' '-I' '/Users/mapleleaf/.opam/4.01.0dev+trunk/lib/bin_prot' '-I' '/Users/mapleleaf/.opam/4.0\
1.0dev+trunk/lib/ocaml' …
Run Code Online (Sandbox Code Playgroud)

ocaml camlp4

4
推荐指数
1
解决办法
618
查看次数

java 9模块的命名约定

什么是Java 9模块的命名约定?假设我的包名是me.jasonyeo.awesome.project,并且每当我module-info.java在IDEA中创建文件时,它都会建议我命名它awesome.project

这是惯例吗?或者我应该说出来me.jasonyeo.awesome.project吗?

java-platform-module-system java-9 java-module

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

查找特定进程的子进程(UNIX)

我需要在solaris中为我的作业生成类似于ptree的东西.

要做那样的事情,我需要进程的子PID.我已经拥有在机器上运行的进程列表,但我拥有的唯一信息是每个进程的父PID.有没有办法获取系统中每个进程的子PID?

该程序将在solaris机器上运行.

c unix solaris

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