gpt4 book ai didi

functional-programming - OCaml 中的可变数据

转载 作者:行者123 更新时间:2023-12-01 07:06:05 26 4
gpt4 key购买 nike

我在 OCaml 中创建了一个可变数据结构,但是当我去访问它时,它给出了一个奇怪的错误,

这是我的代码

type vector = {a:float;b:float};;
type vec_store = {mutable seq:vector array;mutable size:int};;

let max_seq_length = ref 200;;

exception Out_of_bounds;;
exception Vec_store_full;;

let vec_mag {a=c;b=d} = sqrt( c**2.0 +. d**2.0);;


let make_vec_store() =
let vecarr = ref ((Array.create (!max_seq_length)) {a=0.0;b=0.0}) in
{seq= !vecarr;size=0};;

当我在 ocaml 顶层执行此操作时
let x = make _ vec _store;;

然后尝试做 x.size我收到这个错误
Error: This expression has type unit -> vec_store
but an expression was expected of type vec_store

什么似乎是问题?我不明白为什么这行不通。

谢谢,
费萨尔

最佳答案

make_vec_store是一个函数。当你说 let x = make_vec_store ,您将 x 设置为该函数,就像您写的 let x = 1 一样,这将使 x 成为数字 1。您想要的是调用该函数的结果。根据 make_vec_store的定义,需要 () (也称为“单位”)作为参数,所以你可以写 let x = make_vec_store () .

关于functional-programming - OCaml 中的可变数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com