Quantcast
Channel: Active questions tagged ocaml - Stack Overflow
Viewing all articles
Browse latest Browse all 595

OCaml This variant expression is expected to have type unit

$
0
0

I'm having a problem with if statements that I cannot figure out.
My code:

type chess_board = char array array;;type position = int * int;;let chess_board_1:chess_board = [|    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'';''|];    [|'';'';'';'';'';'';'Q';''|];    [|'';'';'';'';'';'';'';''|];    |];;let queen_targeting (chess:chess_board) pos =    match pos with    |(x0, y0) ->        for y = 0 to Array.length chess -1 do            for x = 0 to Array.length chess.(y) -1 do                if chess.(y).(x) = 'Q'                then                    if (                        x = x0 ||         (* Check horizontaly *)                        y = y0 ||         (* Check verticaly *)                        x - x0 = y - y0   (* Check diagonaly *)                    )                     then true                    else false            done        done;;queen_targeting chess_board_1 (3, 3);; (* Expected true *)

I get this ERROR message:

File "[32]", line 27, characters 25-29:Error: This variant expression is expected to have type unit       The constructor true does not belong to type unitCharacters 874-878:                      then true

I have no clue what this means. I tested if statements returning true/false in other methods and it worked just fine. I don't know why it wouldn't work in this scenario so if anyone can help please do.


Viewing all articles
Browse latest Browse all 595

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>