我尝试使用F#读取xls文件,如下所示
open Microsoft.Office.Interop.Excel
let app = ApplicationClass(Visible = false)
let book = app.Workbooks.Open "test.xls"
let sheet = book.Worksheets.[1] :?> _Worksheet
let vals = sheet.UsedRange.Value2
Run Code Online (Sandbox Code Playgroud)
问题是如何将val解析为F#类型?在fsx.exe中,val显示为
'val vals: obj = [bound1
bound2
["colname1"; "colname2"; ...]
[1234,5678,]...]
Run Code Online (Sandbox Code Playgroud)
我想首先检索字符串printfn "%A" vals.ToString();;表示,但
"System.Object[,]"仅显示.如果我然后尝试访问vals.[1,1],我得到错误The field,constructor or member 'item' is not defined
谢谢,
在F#powerpack数学提供程序源代码:我看到了这个(在lapack_service_netlib.fs)
member this.dgemm_((a:matrix),(b:matrix)) =
// allocate results
let c = Matrix.zero (m) (n)
// transpose
let c = Matrix.transpose c
...
// fixups
let c = Matrix.transpose c
// result tuple
c
Run Code Online (Sandbox Code Playgroud)
为什么这个有用?确实c有重复的定义?
如果我想为标准偏差定义浮点数组的扩展方法,那么在Array模块上使用模块扩展还是在类型上使用扩展更好float[]?喜欢 :
module Array =
let std (arr: float[]) = ...
Run Code Online (Sandbox Code Playgroud)
要么
type float ``[]`` with
member this.std = ...
Run Code Online (Sandbox Code Playgroud)
如果我输入扩展作为后者,是否std只计算一次或每次使用它?
而且,后者的正确格式是什么,显然type float ``[]`` with不会导致...谢谢.
在以下虚拟代码中,如果我在最后一行设置断点,x则无法在调试器中访问该变量:
名称 x 在当前上下文中不存在。
module main =
let x = 1
printfn "%d" x
1
Run Code Online (Sandbox Code Playgroud)
但是如果我将最后一行更改为1|>ignore并在那里设置断点,我可以x = 1在调试器中看到。在第一种情况下,F 如何确定x超出范围?谢谢。
如果我有数组A,而我还有一个布尔阵列isChosen与相同长度A如何建立从一个新的数组A,其中isChosen是true?类似的东西A.[isChosen]?我不能Array.filter直接使用,因为isChosen不是A元素的功能,没有Array.filteri像Array.mapi.
我有一个finit.fsx文件要在fsi.exe启动时加载,如:
#r xxxx
type xx = xxx
module Util =
let cd path = xxxx
...
Run Code Online (Sandbox Code Playgroud)
启动fsi.exe后,将其加载为
namespace FSI_0002
module Util = begin
val cd : string -> unit
...
end
Run Code Online (Sandbox Code Playgroud)
问题是我该如何使用module util?我不能open Util或cd直接使用.为了进一步困扰我,如果我把一个命名空间放在顶行,比如namespace Test,在fsi.exe中,它被加载为
namespace FSI_0002.Test
val cd : string -> unit
...
Run Code Online (Sandbox Code Playgroud)
在哪里Module Util?然后我必须open Test;;再Util.cd.
有没有办法在F#启动脚本中定义模块并自动打开模块?谢谢.