首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现二进制搜索时类型错误

实现二进制搜索时类型错误
EN

Stack Overflow用户
提问于 2014-12-16 23:13:19
回答 1查看 55关注 0票数 1

我有以下代码:

代码语言:javascript
复制
open Array

let binSearch a x =
    let l = ref 0 in
    let r = ref (length a) in
    let m = ref 0 in
    while l < r do
        !m := (!l + !r) / 2; (*line 8*)
        if (a.(!m) = x) then
        begin
            !r := !m;
            !l := !r
        end
        else if (a.(!m) > x) then
            !p := !m
        else
            !l := !m + 1
    done;
    a.(!l) = x
;;

当我试图编译它时,我会得到以下错误:

代码语言:javascript
复制
File "binSearch.ml", line 8, characters 2-4:
Error: This expression has type int but an expression was expected of type
     'a ref

为什么编译器期望'a ref

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 23:28:19

您不需要将!放在:=操作符的左侧。操作符:='a ref -> 'a -> unit类型,换句话说,在左侧应该有对'a的引用,在右边应该有对'a的引用。因此,与其:

代码语言:javascript
复制
 !r := !m (* WRONG *)

你需要

代码语言:javascript
复制
 r := !m
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27515675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档