小编Guy*_*der的帖子

DenseMatrix无效分配

不确定如何填充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)

最后一行生成错误"无效分配".

还想知道是否有一种功能性的方式来表达上面的逻辑.

谢谢.

f# mathnet-numerics

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

Prolog毫无理由地退出本地堆栈

我正在尝试在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)

prolog levenshtein-distance non-termination failure-slice

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

F#明确定义了可变变量错误,它不是一个可变变量

我的代码中有几个可变变量.除了一个,所有这些都有效!
变量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)

variables f# mutable

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

什么原因导致REPL打印函数签名而不是函数结果?

什么原因导致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)

f#

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