win*_*aed 6 arrays syntax f# ocaml
我正在尝试将一些OCaml移植到F#.我与OCaml"处于深渊"并且我的F#有点生疏.
无论如何,OCaml代码在OCaml编译器中构建得很好,但是(毫不奇怪)即使在ML兼容性开启的情况下也会在F#编译器中产生大量错误.一些错误看起来是保留字,但大多数错误都抱怨.{如下:
m.(a).(b) <- w.{a + b * c};
Run Code Online (Sandbox Code Playgroud)
a,b,c是整数.
我已经通过OCaml网站,Stackoverflow,法国O'Reilly书籍的英文翻译等进行了大量搜索,但却找不到这样的内容.当然,大多数搜索工具都会出现标点字符问题,这无济于事!是的我发现引用.用于引用记录成员,并{ }用于定义记录,但两者一起?从用法上看,我认为它是某种关联或稀疏数组?
这个语法是什么意思?什么是最接近的F#等价物?
这里有oCaml文档/手册的pdf:
http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.pdf
在页496(页面底部),它说的是通用数组及其get方法:
val get:('a,'b,'c)t - > int array - >'a
读取泛型大数组的元素.Genarray.get a [| i1; ...; iN |]返回其坐标在第一维中为i1,在第二维中为i2的元素...,iN在第N维.
如果a具有C布局,则坐标必须大于或等于0并且严格小于a的相应尺寸.如果a具有Fortran布局,则坐标必须大于或等于1且小于或等于a的相应尺寸.如果数组a没有精确的N维,或者坐标位于数组边界之外,则引发Invalid_argument.
如果N> 3,则提供替代语法:您可以编写.{i1,i2,...,iN}而不是Genarray.get a [| i1; ...; 在|].(具有一个,两个或三个坐标的语法a.{...}保留用于访问一维,二维和三维数组,如下所述.)
此外,它说(特别是关于一维数组):
val get:('a,'b,'c)t - > int - >'a
Array1.get ax,或者a.{x},返回at索引x的元素.x必须大于或等于0且严格小于Array1.dim a如果a具有C布局.如果a具有Fortran布局,则x必须大于或等于1且小于或等于Array1.dim a.否则,引发Invalid_argument.
在F#中,您也可以使用该Array.get方法访问数组元素.但是,更接近的语法是w.[a + b * c].简而言之,在F#中,使用[]而不是{}.
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |