不确定如何填充DenseMatrix类型:
let rows = [|for line in File.ReadAllLines("Z:\\mypath.csv")
|> Seq.skip 1 do yield line.Split(',') |> Array.map float|]
let data = DenseMatrix.ofRowArrays rows
let mutable data_logdiff = DenseMatrix.zero<float> (data.RowCount-1) (data.ColumnCount)
for i in [0 .. data.ColumnCount-1] do
for j in [1 .. data.RowCount-1] do
data_logdiff.At(j-1, i) <- data.At(j, i) / data.At(j-1, i) |> log
Run Code Online (Sandbox Code Playgroud)
最后一行生成错误"无效分配".
还想知道是否有一种功能性的方式来表达上面的逻辑.
谢谢.
我正在尝试在Prolog中实现Levenshtein距离。
实现非常简单:
levenshtein(W1, W2, D) :-
atom_length(W1, L1),
atom_length(W2, L2),
lev(W1, W2, L1, L2, D),
!.
lev(_, _, L1, 0, D) :- D is L1, !.
lev(_, _, 0, L2, D) :- D is L2, !.
lev(W1, W2, L1, L2, D) :-
lev(W1, W2, L1 - 1, L2, D1),
lev(W1, W2, L1, L2 - 1, D2),
lev(W1, W2, L1 - 1, L2 - 1, D3),
charAt(W1, L1, C1),
charAt(W2, L2, C2),
( C1 = C2 -> T is …Run Code Online (Sandbox Code Playgroud) 我的代码中有几个可变变量.除了一个,所有这些都有效!
变量d会出现几个错误
learn.fsx(33,25): error FS0027: This value is not mutable. Consider using the mutable keyword, e.g. 'let mutable d = expression'
Run Code Online (Sandbox Code Playgroud)
问题是当你查看我的代码时,变量显然被定义为一个可变变量.
我认为这是必要的,因为我能想到的唯一能引起问题的是它是变量定义之后的东西,它使它再次变得不可变.
let seq = [2;2;3;3;5;6]
let exp = [[];[]]
let mutable points = 0
let mutable e = 1
let mutable state = ""
let mutable d = 1
let rec guess (x:int) =
match points with
|100 -> "learned"
|_ -> match seq.[x] with
|d -> match (exp.[((List.length exp)-2)]) with
|[] -> if state = …Run Code Online (Sandbox Code Playgroud) 什么原因导致REPL打印函数签名而不是函数结果?
我试图执行以下行:
let email = Email "abc.com";;
email |> sendMessage |> ignore;;
Run Code Online (Sandbox Code Playgroud)
代码如下
type PhoneNumber =
{ CountryCode:int
Number:string }
type ContactMethod =
| Email of string
| PhoneNumber of PhoneNumber
let sendMessage contact = function
| Email _ -> printf "Sending message via email"
| PhoneNumber phone -> printf "Sending message via phone"
// c. Create two values, one for the email address case and
// one for the phone number case, and pass them to sendMessage.
let email …Run Code Online (Sandbox Code Playgroud)