小编ane*_*eal的帖子

获取模块中定义的函数列表的任何方法?

是否有任何内省的魔法会给我一个模块中定义的函数列表?

module Foo
  function foo()
    "foo"
  end
  function bar()
    "bar"
  end
end
Run Code Online (Sandbox Code Playgroud)

一些神话般的功能如:

functions_in(Foo)
Run Code Online (Sandbox Code Playgroud)

哪个会回归:[foo,bar]

julia

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

如何在Opa中访问HTML Canvas元素?

是否可以在Opa中访问HTML5画布元素?

opa

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

Ocaml有Bignum模块吗?

我已经做了一些搜索,显然在标准库中曾经有一个Bignum模块根据这个 但是在这一点上我没有在标准库中看到任何东西.

ocaml

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

将多态类型转换为字符串('a - > string)

给定以下类型定义:

type 'a range = Full | Range of ('a * 'a);;
Run Code Online (Sandbox Code Playgroud)

如何将此类型的值转换为字符串?

我目前有:

let string_of_range r = match r with
  | Full -> "Full"
  | Range(a,b) -> "Range("^(string_of_int a)^","^(string_of_int b)^")";; 
Run Code Online (Sandbox Code Playgroud)

但是,当然,这表示a和b的类型为int.它们也可以是浮点数或字符(请参阅我之前关于约束类型的问题)

ocaml

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

为什么Opa语言需要'do'?

我认为新手会被"做"弄糊涂,我从语言设计的角度对此表示怀疑.你不想在一个新语言的生命的这个阶段混淆新手,几乎每个人都是新手,你想要新手,以建立社区和临界质量;-)

'do'的文档(3.8.3.做或不做)说:

这种结构有一个很好的理由:在Opa中,每个函数定义(更常见的是每个不在顶层的值)以一个值结束,这是函数的结果 - 相反,一旦我们达到第一个值,我们有功能的结果,所以功能完成.

这是我在上面加粗的部分,我想知道:为什么在达到第一个值后功能完成了?为了避免在OCaml中看到这样的事情,我们是否"引入"?:

let _ = (some expression)
Run Code Online (Sandbox Code Playgroud)

在Opa的语言设计中使用'do'的替代方法是什么?如何处理这个问题(从语言设计的角度来看).

opa

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

将F#seq表达式转换为OCaml

在我试图转换为OCaml的F#代码中,我遇到了以下问题:

    let rec parseList lst off =
        seq {
            if List.isEmpty lst then ()
            else
                match parse off <| List.head lst with
                | (Unmatched, _) as y -> yield y
                | (y, z) -> yield (y, z)
                            yield! parseList (List.tail lst) z
        }
Run Code Online (Sandbox Code Playgroud)

我想知道如何将 带有yieldseq {...}表达式转换为OCaml?我的第一个猜测是seq必须成为一个列表.

f# ocaml

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

从防火墙后面使用opam

我想知道我需要设置什么,以便opam将通过代理服务器下载包,如果我在防火墙后面.

ocaml opam

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

如何在不使用eval的情况下从符号中获取函数?

我有一个代表要调用的函数名称的符号:

julia> func_sym = :tanh
Run Code Online (Sandbox Code Playgroud)

我可以使用该符号来获取tanh函数并使用以下方法调用它:

julia> eval(func_sym)(2)
0.9640275800758169
Run Code Online (Sandbox Code Playgroud)

但我宁愿避免那里的'eval',因为它会被多次调用并且它很昂贵(并且func_sym可以根据上下文有几个不同的值).

Ruby中的IIRC你可以说:

obj.send(func_sym, args)
Run Code Online (Sandbox Code Playgroud)

朱莉娅有类似的东西吗?

编辑:有关为什么我有符号表示的函数的更多细节:

我有一个类型(来自神经网络),包括激活功能,最初我把它作为一个函数包括在内:

type NeuralLayer
  weights::Matrix{Float32}
  biases::Vector{Float32}
  a_func::Function
end
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用JLD将这些内容序列化为文件,但是无法序列化函数,所以我使用了符号:

type NeuralLayer
  weights::Matrix{Float32}
  biases::Vector{Float32}
  a_func::Symbol
end
Run Code Online (Sandbox Code Playgroud)

目前我使用上面的eval方法来调用激活函数.有NeuralLayers的集合,每个都可以拥有自己的激活功能.

julia

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

围绕OCaml类型定义的'<'和'>'是什么意思?

我使用此类型定义运行了一些OCaml代码:

type thread = < run : thread list ; block : bool >
Run Code Online (Sandbox Code Playgroud)

这个定义中'<'和'>'的含义是什么?它几乎看起来像一个记录声明 - 它只是一个记录声明的替代语法?

ocaml

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

在Julia中获取灰度图像的2D直方图

使用Images包,我可以打开彩色图像,将其转换为灰度,然后:

using Images
img_gld = imread("...path to some color jpg...")
img_gld_gs = convert(Image{Gray},img_gld)
#change from floats to Array of values between 0 and 255:
img_gld_gs = reinterpret(Uint8,data(img_gld_gs))
Run Code Online (Sandbox Code Playgroud)

现在我有一个1920X1080阵列的Uint8:

julia> img_gld_gs 
1920x1080 Array{Uint8,2}
Run Code Online (Sandbox Code Playgroud)

现在我想获得Uint8值的2D数组的直方图:

julia> hist(img_gld_gs)
(0.0:50.0:300.0,
6x1080 Array{Int64,2}:
 1302  1288  1293  1302  1297  1300  1257  1234  …    12    13    13    12    13    15    14
  618   632   627   618   623   620   663   686      189   187   187   188   185   183   183
    0     0     0     0     0     0     0     0        9     9     8 …
Run Code Online (Sandbox Code Playgroud)

image-processing julia

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

标签 统计

ocaml ×5

julia ×3

opa ×2

f# ×1

image-processing ×1

opam ×1