Search code examples
functional-programmingocamlprogram-entry-point

OCaml main function


I need a main function to run the others functions.

I tried this:

let main () = 
  let deck = make_mazo in 
  let jugadores = players [] 0 in
  dothemagic deck jugadores 0 [] [] [];;

But I got this error:

File "game.ml", line 329, characters 37-39: Error: Syntax error

I think ;; is the problem and I need a different way to end the code. Also try with only ; and the problem is the same.

[EDIT]

An update here

let main = 
  let deck = make_mazo [] in 
  let game = players deck [] 0 in
  let dd = fst game in 
  let jugadores = snd game in
  dothemagic dd jugadores 0 [] [] [] [];

let () = main;;

Error persist:

File "game.ml", line 253, characters 13-15: Error: Syntax error

The other functions are working perfectly fine, but i need a main function because I want to run the program with ocaml game.ml or ocamlbuild game.native

[SECOND EDIT]

After @camlspotter response: The use of ; of your code is wrong. Remove it.

Update 2.0

let main = 
  let deck = make_mazo [] in 
  let game = players deck [] 0 in
  let dd = fst game in 
  let jugadores = snd game in
  dothemagic dd jugadores 0 [] [] [] []

let () = main;;

New Error:

File "game.ml", line 253, characters 0-3: Error: Syntax error

Think let is the problem now, so i try with this

let main = 
  let deck = make_mazo [] in 
  let game = players deck [] 0 in
  let dd = fst game in 
  let jugadores = snd game in
  dothemagic dd jugadores 0 [] [] [] []

main;;

But Error is:

File "game.ml", line 253, characters 4-6: Error: Syntax error


Solution

  • To solve my problem, I had to write the functions in the following way,

    let fun x =
    let y = blabla in
    code_returning_unit; (* Use ; for unit returns *)
    return_value;; (* Use ;; for end of fun *)
    

    Thanks all for the help.